@settlemint/solidity-diamond-bond
Version:
Smart contract set to build an enterprise bond usecase in SettleMint
522 lines (521 loc) • 23.5 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "GenericToken",
"sourceName": "contracts/GenericToken.sol",
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [],
"name": "EnforcedPause",
"type": "error"
},
{
"inputs": [],
"name": "ExpectedPause",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "burnFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040523461041857610eed803803806100198161041c565b9283398101906040818303126104185780516001600160401b0381116104185782610045918301610441565b60208201519092906001600160401b038111610418576100659201610441565b81516001600160401b03811161032b57600354600181811c9116801561040e575b602082101461030d57601f81116103ab575b50602092601f821160011461034a57928192935f9261033f575b50508160011b915f199060031b1c1916176003555b80516001600160401b03811161032b57600454600181811c91168015610321575b602082101461030d57601f81116102aa575b50602091601f821160011461024a579181925f9261023f575b50508160011b915f199060031b1c1916176004555b331561022c5760058054610100600160a81b0319811633600881811b610100600160a81b03169290921790935560ff929082901c6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a31661021d5760025469d3c21bcecceda1000000810180911161020957600255335f525f60205260405f2069d3c21bcecceda1000000815401905560405169d3c21bcecceda100000081525f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a3604051610a5a90816104938239f35b634e487b7160e01b5f52601160045260245ffd5b63d93c066560e01b5f5260045ffd5b631e4fbdf760e01b5f525f60045260245ffd5b015190505f80610113565b601f1982169260045f52805f20915f5b8581106102925750836001951061027a575b505050811b01600455610128565b01515f1960f88460031b161c191690555f808061026c565b9192602060018192868501518155019401920161025a565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610303575b601f0160051c01905b8181106102f857506100fa565b5f81556001016102eb565b90915081906102e2565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100e8565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b2565b601f1982169360035f52805f20915f5b868110610393575083600195961061037b575b505050811b016003556100c7565b01515f1960f88460031b161c191690555f808061036d565b9192602060018192868501518155019401920161035a565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c81019160208410610404575b601f0160051c01905b8181106103f95750610098565b5f81556001016103ec565b90915081906103e3565b90607f1690610086565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761032b57604052565b81601f82011215610418578051906001600160401b03821161032b57610470601f8301601f191660200161041c565b928284526020838301011161041857815f9260208093018386015e830101529056fe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde03146106d957508063095ea7b31461063157806318160ddd1461061457806323b872dd146105dc578063313ce567146105c15780633f4ba83a1461055b57806340c10f19146104a757806342966c681461048a5780635c975abb1461046857806370a0823114610431578063715018a6146103d257806379cc6790146103a05780638456cb59146103475780638da5cb5b1461031b57806395d89b4114610200578063a9059cbb146101cf578063dd62ed3e1461017f5763f2fde38b146100e2575f80fd5b3461017b57602036600319011261017b576100fb6107d2565b610103610953565b6001600160a01b0381169081156101685760058054610100600160a81b03198116600893841b610100600160a81b031617909155901c6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b3461017b57604036600319011261017b576101986107d2565b6101a06107e8565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461017b57604036600319011261017b576101f56101eb6107d2565b60243590336108a1565b602060405160018152f35b3461017b575f36600319011261017b576040515f6004548060011c90600181168015610311575b6020831081146102fd578285529081156102e1575060011461028c575b50819003601f01601f191681019067ffffffffffffffff82118183101761027857610274829182604052826107a8565b0390f35b634e487b7160e01b5f52604160045260245ffd5b905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5f905b8282106102cb57506020915082010182610244565b60018160209254838588010152019101906102b6565b90506020925060ff191682840152151560051b82010182610244565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610227565b3461017b575f36600319011261017b5760055460405160089190911c6001600160a01b03168152602090f35b3461017b575f36600319011261017b5761035f610953565b61036761097d565b600160ff1960055416176005557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461017b57604036600319011261017b576103d06103bc6107d2565b602435906103cb8233836107fe565b610998565b005b3461017b575f36600319011261017b576103ea610953565b60058054610100600160a81b031981169091555f9060081c6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461017b57602036600319011261017b576001600160a01b036104526107d2565b165f525f602052602060405f2054604051908152f35b3461017b575f36600319011261017b57602060ff600554166040519015158152f35b3461017b57602036600319011261017b576103d060043533610998565b3461017b57604036600319011261017b576104c06107d2565b602435906104cc61097d565b6001600160a01b0316908115610548576104e461097d565b600254908082018092116105345760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b3461017b575f36600319011261017b57610573610953565b60055460ff8116156105b25760ff19166005557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461017b575f36600319011261017b57602060405160128152f35b3461017b57606036600319011261017b576101f56105f86107d2565b6106006107e8565b6044359161060f8333836107fe565b6108a1565b3461017b575f36600319011261017b576020600254604051908152f35b3461017b57604036600319011261017b5761064a6107d2565b6024359033156106c6576001600160a01b03169081156106b357335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461017b575f36600319011261017b575f6003548060011c9060018116801561079e575b6020831081146102fd578285529081156102e157506001146107495750819003601f01601f191681019067ffffffffffffffff82118183101761027857610274829182604052826107a8565b905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5f905b82821061078857506020915082010182610244565b6001816020925483858801015201910190610773565b91607f16916106fd565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361017b57565b602435906001600160a01b038216820361017b57565b6001600160a01b039081165f818152600160209081526040808320948616835293905291909120549291905f198410610838575b50505050565b82841061087e5780156106c6576001600160a01b038216156106b3575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f808080610832565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610940576001600160a01b0316918215610548576108c961097d565b815f525f60205260405f205481811061092757817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b60055460081c6001600160a01b0316330361096a57565b63118cdaa760e01b5f523360045260245ffd5b60ff6005541661098957565b63d93c066560e01b5f5260045ffd5b9091906001600160a01b03168015610940576109b261097d565b805f525f60205260405f2054838110610a0a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffdfea26469706673582212206c84eb2c8ca5381a7b44a7489c7b06c1fe95317c97786249105f3e1ee0c87a5d64736f6c634300081e0033",
"deployedBytecode": "0x6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde03146106d957508063095ea7b31461063157806318160ddd1461061457806323b872dd146105dc578063313ce567146105c15780633f4ba83a1461055b57806340c10f19146104a757806342966c681461048a5780635c975abb1461046857806370a0823114610431578063715018a6146103d257806379cc6790146103a05780638456cb59146103475780638da5cb5b1461031b57806395d89b4114610200578063a9059cbb146101cf578063dd62ed3e1461017f5763f2fde38b146100e2575f80fd5b3461017b57602036600319011261017b576100fb6107d2565b610103610953565b6001600160a01b0381169081156101685760058054610100600160a81b03198116600893841b610100600160a81b031617909155901c6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b3461017b57604036600319011261017b576101986107d2565b6101a06107e8565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461017b57604036600319011261017b576101f56101eb6107d2565b60243590336108a1565b602060405160018152f35b3461017b575f36600319011261017b576040515f6004548060011c90600181168015610311575b6020831081146102fd578285529081156102e1575060011461028c575b50819003601f01601f191681019067ffffffffffffffff82118183101761027857610274829182604052826107a8565b0390f35b634e487b7160e01b5f52604160045260245ffd5b905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5f905b8282106102cb57506020915082010182610244565b60018160209254838588010152019101906102b6565b90506020925060ff191682840152151560051b82010182610244565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610227565b3461017b575f36600319011261017b5760055460405160089190911c6001600160a01b03168152602090f35b3461017b575f36600319011261017b5761035f610953565b61036761097d565b600160ff1960055416176005557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461017b57604036600319011261017b576103d06103bc6107d2565b602435906103cb8233836107fe565b610998565b005b3461017b575f36600319011261017b576103ea610953565b60058054610100600160a81b031981169091555f9060081c6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461017b57602036600319011261017b576001600160a01b036104526107d2565b165f525f602052602060405f2054604051908152f35b3461017b575f36600319011261017b57602060ff600554166040519015158152f35b3461017b57602036600319011261017b576103d060043533610998565b3461017b57604036600319011261017b576104c06107d2565b602435906104cc61097d565b6001600160a01b0316908115610548576104e461097d565b600254908082018092116105345760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b3461017b575f36600319011261017b57610573610953565b60055460ff8116156105b25760ff19166005557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461017b575f36600319011261017b57602060405160128152f35b3461017b57606036600319011261017b576101f56105f86107d2565b6106006107e8565b6044359161060f8333836107fe565b6108a1565b3461017b575f36600319011261017b576020600254604051908152f35b3461017b57604036600319011261017b5761064a6107d2565b6024359033156106c6576001600160a01b03169081156106b357335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461017b575f36600319011261017b575f6003548060011c9060018116801561079e575b6020831081146102fd578285529081156102e157506001146107495750819003601f01601f191681019067ffffffffffffffff82118183101761027857610274829182604052826107a8565b905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5f905b82821061078857506020915082010182610244565b6001816020925483858801015201910190610773565b91607f16916106fd565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361017b57565b602435906001600160a01b038216820361017b57565b6001600160a01b039081165f818152600160209081526040808320948616835293905291909120549291905f198410610838575b50505050565b82841061087e5780156106c6576001600160a01b038216156106b3575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f808080610832565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610940576001600160a01b0316918215610548576108c961097d565b815f525f60205260405f205481811061092757817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b60055460081c6001600160a01b0316330361096a57565b63118cdaa760e01b5f523360045260245ffd5b60ff6005541661098957565b63d93c066560e01b5f5260045ffd5b9091906001600160a01b03168015610940576109b261097d565b805f525f60205260405f2054838110610a0a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffdfea26469706673582212206c84eb2c8ca5381a7b44a7489c7b06c1fe95317c97786249105f3e1ee0c87a5d64736f6c634300081e0033",
"linkReferences": {},
"deployedLinkReferences": {}
}