UNPKG

@settlemint/solidity-diamond-bond

Version:

Smart contract set to build an enterprise bond usecase in SettleMint

315 lines (314 loc) 20.4 kB
{ "_format": "hh-sol-artifact-1", "contractName": "DiamondTestContract", "sourceName": "contracts/DiamondTestContract.sol", "abi": [ { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "CannotAddFunctionToDiamondThatAlreadyExists", "type": "error" }, { "inputs": [ { "internalType": "bytes4[]", "name": "_selectors", "type": "bytes4[]" } ], "name": "CannotAddSelectorsToZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "CannotRemoveFunctionThatDoesNotExist", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "CannotRemoveImmutableFunction", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "CannotReplaceFunctionThatDoesNotExists", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet", "type": "error" }, { "inputs": [ { "internalType": "bytes4[]", "name": "_selectors", "type": "bytes4[]" } ], "name": "CannotReplaceFunctionsFromFacetWithZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "CannotReplaceImmutableFunction", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "_action", "type": "uint8" } ], "name": "IncorrectFacetCutAction", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_initializationContractAddress", "type": "address" }, { "internalType": "bytes", "name": "_calldata", "type": "bytes" } ], "name": "InitializationFunctionReverted", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_contractAddress", "type": "address" }, { "internalType": "string", "name": "_message", "type": "string" } ], "name": "NoBytecodeAtAddress", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_facetAddress", "type": "address" } ], "name": "NoSelectorsProvidedForFacetForCut", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "address", "name": "_contractOwner", "type": "address" } ], "name": "NotContractOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_facetAddress", "type": "address" } ], "name": "RemoveFacetAddressMustBeZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "address", "name": "facetAddress", "type": "address" }, { "internalType": "enum IDiamond.FacetCutAction", "name": "action", "type": "uint8" }, { "internalType": "bytes4[]", "name": "functionSelectors", "type": "bytes4[]" } ], "indexed": false, "internalType": "struct IDiamond.FacetCut[]", "name": "_diamondCut", "type": "tuple[]" }, { "indexed": false, "internalType": "address", "name": "_init", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "_calldata", "type": "bytes" } ], "name": "DiamondCut", "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" }, { "inputs": [], "name": "contractOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "facetAddress", "type": "address" }, { "internalType": "enum IDiamond.FacetCutAction", "name": "action", "type": "uint8" }, { "internalType": "bytes4[]", "name": "functionSelectors", "type": "bytes4[]" } ], "internalType": "struct IDiamond.FacetCut[]", "name": "_diamondCut", "type": "tuple[]" }, { "internalType": "address", "name": "_init", "type": "address" }, { "internalType": "bytes", "name": "_calldata", "type": "bytes" } ], "name": "diamondCut", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "enforceIsContractOwner", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "setContractOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x60808060405234601557610d0c908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80631f931c1c14610173578063a34d42b8146100eb578063ce606ee0146100a45763d167091414610045575f80fd5b346100a0575f3660031901126100a0577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f546001600160a01b03163381900361008a57005b63ff4127cb60e01b5f523360045260245260445ffd5b5f80fd5b346100a0575f3660031901126100a0577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f546040516001600160a01b039091168152602090f35b346100a05760203660031901126100a0576004356001600160a01b038116908190036100a0577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f80546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b346100a05760603660031901126100a05760043567ffffffffffffffff81116100a057366023820112156100a05780600401356101b76101b282610a60565b610a3a565b9160208383815201906024829360051b820101903682116100a05760248101925b82841061092457856024356001600160a01b0381169087908281036100a0576044359067ffffffffffffffff82116100a057366023830112156100a05781600401356102266101b282610a78565b9281845236602483830101116100a05785845f6020858b9660248b970183860137830101525f935b80518510156108165760406102638683610a94565b510151926001600160a01b036102798784610a94565b515116948451156108035760206102908885610a94565b51015160038110156107ef57806104995750851561047a5761ffff5f516020610cb75f395f51905f525416936103066102c96060610a3a565b602481527f4c69624469616d6f6e644375743a2041646420666163657420686173206e6f20602082015263636f646560e01b604082015288610c57565b5f945b8651861015610463576001600160e01b03196103258789610a94565b51165f8181525f516020610c975f395f51905f5260205260409020546001600160a01b0316610451576103b7610359610a1a565b8a815261ffff9390931660208085018281525f8581525f516020610c975f395f51905f5290925260409091209451855491516001600160b01b03199092166001600160a01b03919091161760a09190911b61ffff60a01b1617909355565b5f516020610cb75f395f51905f5254906801000000000000000082101561043d576103f782600161041494015f516020610cb75f395f51905f5255610ae0565b90919063ffffffff83549160031b9260e01c831b921b1916179055565b61ffff81146104295760019586019501610309565b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b63ebbf5d0760e01b5f5260045260245ffd5b5094509450946001919692505b019391909461024e565b6040516302b8da0760e21b8152806104958760048301610b38565b0390fd5b959795600181036105f1575087156105d6579294926104fc6104bb6060610a3a565b602881527f4c69624469616d6f6e644375743a205265706c61636520666163657420686173602082015267206e6f20636f646560c01b604082015289610c57565b6001600160a01b038816955f5b86518110156105c6576001600160e01b03196105258289610a94565b51165f8181525f516020610c975f395f51905f5260205260409020546001600160a01b03163081146105b3578b81146105a0571561058e575f9081525f516020610c975f395f51905f526020526040902080546001600160a01b03191689179055600101610509565b637479f93960e01b5f5260045260245ffd5b50631ac6ce8d60e11b5f5260045260245ffd5b50632901806d60e11b5f5260045260245ffd5b5094509450946001919650610470565b60405163cd98a96f60e01b8152806104958760048301610b38565b94959492939192909190600281036107d957505f516020610cb75f395f51905f525497806107c757505f5b86518110156107b7576001600160e01b03196106388289610a94565b511690815f525f516020610c975f395f51905f5260205260405f209961065c610a1a565b9a549a60018060a01b038c1680825261ffff602083019d60a01c168d52156107a457516001600160a01b03163014610791578015610429575f1901998a61ffff8251160361071d575b505f516020610cb75f395f51905f5254918215610709576001925f19016106cb81610ae0565b63ffffffff82549160031b1b191690555f516020610cb75f395f51905f52555f525f516020610c975f395f51905f526020525f60408120550161061c565b634e487b7160e01b5f52603160045260245ffd5b61078b9061ffff61072d8d610ae0565b90549060031b1c60e01b91610748836103f784845116610ae0565b516001600160e01b03199092165f9081525f516020610c975f395f51905f5260205260409020805461ffff60a01b19169190921660a01b61ffff60a01b16179055565b8a6106a5565b82630df5fd6160e31b5f5260045260245ffd5b83637a08a22d60e01b5f5260045260245ffd5b5093929650935093600190610470565b63d091bc8160e01b5f5260045260245ffd5b60ff90633ff4d20f60e11b5f521660045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b8563e767f91f60e01b5f5260045260245ffd5b8591926040519160608301906060845251809152608083019060808160051b85010196915f905b82821061088e5761088c88887f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67389806108848f8c6020840152828103604084015286610abc565b0390a1610b7b565b005b858903607f19018152835180516001600160a01b03168a5260208101519499939492939192606083019160038210156107ef57604060809160209384870152015193606060408201528451809452019201905f905b808210610901575050506020806001929a019201920190929161083d565b82516001600160e01b0319168452602093840193909201916001909101906108e3565b833567ffffffffffffffff81116100a0578201606060231982360301126100a057604051906060820182811067ffffffffffffffff82111761043d5760405260248101356001600160a01b03811681036100a0578252604481013560038110156100a0576020830152606481013567ffffffffffffffff81116100a057602491010136601f820112156100a05780356109bf6101b282610a60565b9160208084848152019260051b820101903682116100a057602001915b8183106109f95750505060408201528152602093840193016101d8565b82356001600160e01b0319811681036100a0578152602092830192016109dc565b604051906040820182811067ffffffffffffffff82111761043d57604052565b6040519190601f01601f1916820167ffffffffffffffff81118382101761043d57604052565b67ffffffffffffffff811161043d5760051b60200190565b67ffffffffffffffff811161043d57601f01601f191660200190565b8051821015610aa85760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b905f516020610cb75f395f51905f5254821015610aa8575f516020610cb75f395f51905f525f52600382901c7fc0d727610ea16241eff4447d08bb1b4595f7d2ec4515282437a13b7d0df4b922019160021b601c1690565b60206040818301928281528451809452019201905f5b818110610b5b5750505090565b82516001600160e01b031916845260209384019390920191600101610b4e565b6001600160a01b03811691908215610c52575f8091610bde610b9d6060610a3a565b602881527f4c69624469616d6f6e644375743a205f696e6974206164647265737320686173602082015267206e6f20636f646560c01b604082015282610c57565b83519060208501905af4913d15610c4a573d92610bfd6101b285610a78565b9384523d5f602086013e5b15610c1257505050565b825115610c2157825160208401fd5b61049560405192839263192105d760e01b84526004840152604060248401526044830190610abc565b606092610c08565b505050565b803b15610c62575050565b6040805163919834b960e01b81526001600160a01b0390921660048301526024820152908190610495906044830190610abc56fec8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131cc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131da2646970667358221220fca476968391a762c3a68b154077568ae31ff86b23ff1a64c597da7bb952b98964736f6c634300081e0033", "deployedBytecode": "0x60806040526004361015610011575f80fd5b5f3560e01c80631f931c1c14610173578063a34d42b8146100eb578063ce606ee0146100a45763d167091414610045575f80fd5b346100a0575f3660031901126100a0577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f546001600160a01b03163381900361008a57005b63ff4127cb60e01b5f523360045260245260445ffd5b5f80fd5b346100a0575f3660031901126100a0577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f546040516001600160a01b039091168152602090f35b346100a05760203660031901126100a0576004356001600160a01b038116908190036100a0577fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f80546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b346100a05760603660031901126100a05760043567ffffffffffffffff81116100a057366023820112156100a05780600401356101b76101b282610a60565b610a3a565b9160208383815201906024829360051b820101903682116100a05760248101925b82841061092457856024356001600160a01b0381169087908281036100a0576044359067ffffffffffffffff82116100a057366023830112156100a05781600401356102266101b282610a78565b9281845236602483830101116100a05785845f6020858b9660248b970183860137830101525f935b80518510156108165760406102638683610a94565b510151926001600160a01b036102798784610a94565b515116948451156108035760206102908885610a94565b51015160038110156107ef57806104995750851561047a5761ffff5f516020610cb75f395f51905f525416936103066102c96060610a3a565b602481527f4c69624469616d6f6e644375743a2041646420666163657420686173206e6f20602082015263636f646560e01b604082015288610c57565b5f945b8651861015610463576001600160e01b03196103258789610a94565b51165f8181525f516020610c975f395f51905f5260205260409020546001600160a01b0316610451576103b7610359610a1a565b8a815261ffff9390931660208085018281525f8581525f516020610c975f395f51905f5290925260409091209451855491516001600160b01b03199092166001600160a01b03919091161760a09190911b61ffff60a01b1617909355565b5f516020610cb75f395f51905f5254906801000000000000000082101561043d576103f782600161041494015f516020610cb75f395f51905f5255610ae0565b90919063ffffffff83549160031b9260e01c831b921b1916179055565b61ffff81146104295760019586019501610309565b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b63ebbf5d0760e01b5f5260045260245ffd5b5094509450946001919692505b019391909461024e565b6040516302b8da0760e21b8152806104958760048301610b38565b0390fd5b959795600181036105f1575087156105d6579294926104fc6104bb6060610a3a565b602881527f4c69624469616d6f6e644375743a205265706c61636520666163657420686173602082015267206e6f20636f646560c01b604082015289610c57565b6001600160a01b038816955f5b86518110156105c6576001600160e01b03196105258289610a94565b51165f8181525f516020610c975f395f51905f5260205260409020546001600160a01b03163081146105b3578b81146105a0571561058e575f9081525f516020610c975f395f51905f526020526040902080546001600160a01b03191689179055600101610509565b637479f93960e01b5f5260045260245ffd5b50631ac6ce8d60e11b5f5260045260245ffd5b50632901806d60e11b5f5260045260245ffd5b5094509450946001919650610470565b60405163cd98a96f60e01b8152806104958760048301610b38565b94959492939192909190600281036107d957505f516020610cb75f395f51905f525497806107c757505f5b86518110156107b7576001600160e01b03196106388289610a94565b511690815f525f516020610c975f395f51905f5260205260405f209961065c610a1a565b9a549a60018060a01b038c1680825261ffff602083019d60a01c168d52156107a457516001600160a01b03163014610791578015610429575f1901998a61ffff8251160361071d575b505f516020610cb75f395f51905f5254918215610709576001925f19016106cb81610ae0565b63ffffffff82549160031b1b191690555f516020610cb75f395f51905f52555f525f516020610c975f395f51905f526020525f60408120550161061c565b634e487b7160e01b5f52603160045260245ffd5b61078b9061ffff61072d8d610ae0565b90549060031b1c60e01b91610748836103f784845116610ae0565b516001600160e01b03199092165f9081525f516020610c975f395f51905f5260205260409020805461ffff60a01b19169190921660a01b61ffff60a01b16179055565b8a6106a5565b82630df5fd6160e31b5f5260045260245ffd5b83637a08a22d60e01b5f5260045260245ffd5b5093929650935093600190610470565b63d091bc8160e01b5f5260045260245ffd5b60ff90633ff4d20f60e11b5f521660045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b8563e767f91f60e01b5f5260045260245ffd5b8591926040519160608301906060845251809152608083019060808160051b85010196915f905b82821061088e5761088c88887f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67389806108848f8c6020840152828103604084015286610abc565b0390a1610b7b565b005b858903607f19018152835180516001600160a01b03168a5260208101519499939492939192606083019160038210156107ef57604060809160209384870152015193606060408201528451809452019201905f905b808210610901575050506020806001929a019201920190929161083d565b82516001600160e01b0319168452602093840193909201916001909101906108e3565b833567ffffffffffffffff81116100a0578201606060231982360301126100a057604051906060820182811067ffffffffffffffff82111761043d5760405260248101356001600160a01b03811681036100a0578252604481013560038110156100a0576020830152606481013567ffffffffffffffff81116100a057602491010136601f820112156100a05780356109bf6101b282610a60565b9160208084848152019260051b820101903682116100a057602001915b8183106109f95750505060408201528152602093840193016101d8565b82356001600160e01b0319811681036100a0578152602092830192016109dc565b604051906040820182811067ffffffffffffffff82111761043d57604052565b6040519190601f01601f1916820167ffffffffffffffff81118382101761043d57604052565b67ffffffffffffffff811161043d5760051b60200190565b67ffffffffffffffff811161043d57601f01601f191660200190565b8051821015610aa85760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b905f516020610cb75f395f51905f5254821015610aa8575f516020610cb75f395f51905f525f52600382901c7fc0d727610ea16241eff4447d08bb1b4595f7d2ec4515282437a13b7d0df4b922019160021b601c1690565b60206040818301928281528451809452019201905f5b818110610b5b5750505090565b82516001600160e01b031916845260209384019390920191600101610b4e565b6001600160a01b03811691908215610c52575f8091610bde610b9d6060610a3a565b602881527f4c69624469616d6f6e644375743a205f696e6974206164647265737320686173602082015267206e6f20636f646560c01b604082015282610c57565b83519060208501905af4913d15610c4a573d92610bfd6101b285610a78565b9384523d5f602086013e5b15610c1257505050565b825115610c2157825160208401fd5b61049560405192839263192105d760e01b84526004840152604060248401526044830190610abc565b606092610c08565b505050565b803b15610c62575050565b6040805163919834b960e01b81526001600160a01b0390921660048301526024820152908190610495906044830190610abc56fec8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131cc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131da2646970667358221220fca476968391a762c3a68b154077568ae31ff86b23ff1a64c597da7bb952b98964736f6c634300081e0033", "linkReferences": {}, "deployedLinkReferences": {} }