@settlemint/solidity-diamond-bond
Version:
Smart contract set to build an enterprise bond usecase in SettleMint
315 lines (314 loc) • 20.4 kB
JSON
{
"_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": {}
}