@coti-io/coti-contracts-examples
Version:
Example smart contracts demonstrating the use of COTI's GC technology, including integrations with MPC, private ERC20, and ERC721 contracts.
263 lines (262 loc) • 23.2 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "PrivateAuction",
"sourceName": "contracts/PrivateAuction.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_beneficiary",
"type": "address"
},
{
"internalType": "contract PrivateERC20",
"name": "_tokenContract",
"type": "address"
},
{
"internalType": "uint256",
"name": "biddingTime",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isStoppable",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "time",
"type": "uint256"
}
],
"name": "TooEarly",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "time",
"type": "uint256"
}
],
"name": "TooLate",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "ctBool",
"name": "isHighestBid",
"type": "uint256"
}
],
"name": "HighestBid",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "who",
"type": "address"
}
],
"name": "Winner",
"type": "event"
},
{
"inputs": [],
"name": "auctionEnd",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "beneficiary",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "ctUint64",
"name": "ciphertext",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"internalType": "struct itUint64",
"name": "itBid",
"type": "tuple"
}
],
"name": "bid",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "bidCounter",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "claim",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "contractOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "doIHaveHighestBid",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "endTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getBid",
"outputs": [
{
"internalType": "ctUint64",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "manuallyStopped",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "stop",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "stoppable",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tokenContract",
"outputs": [
{
"internalType": "contract PrivateERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tokenTransferred",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040526007805462ff0000191690553480156200001d57600080fd5b50604051620012be380380620012be8339810160408190526200004091620001fd565b600180546001600160a01b038087166001600160a01b03199283161790925560058054928616929091169190911790556200007c82426200025d565b600090815562000097906200009190620000de565b6200016e565b60065560078054600060045562ff0001600160b81b031916610100921515929092026301000000600160b81b03191691909117336301000000021790555062000299915050565b60008082620000ef576000620000f2565b60015b6040516306cdb05b60e51b81526000600482015260ff9190911660248201819052915060649063d9b60b60906044016020604051808303816000875af115801562000141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016791906200027f565b9392505050565b6040516362864e0160e11b8152600060048201819052602482018390529060649063c50c9c02906044016020604051808303816000875af1158015620001b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001de91906200027f565b92915050565b6001600160a01b0381168114620001fa57600080fd5b50565b600080600080608085870312156200021457600080fd5b84516200022181620001e4565b60208601519094506200023481620001e4565b60408601516060870151919450925080151581146200025257600080fd5b939692955090935050565b80820180821115620001de57634e487b7160e01b600052601160045260246000fd5b6000602082840312156200029257600080fd5b5051919050565b61101580620002a96000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063453afef411610097578063c5822c0d11610066578063c5822c0d146101b1578063ce606ee0146101be578063edfdc41c146101d8578063f358c1a5146101eb57600080fd5b8063453afef41461016c5780634e71d92d1461017457806355a373d61461017c578063bb4872de1461018f57600080fd5b80632a24f46c116100d35780632a24f46c146101285780633197cbb61461013057806338af3eed146101395780633ccfd60b1461016457600080fd5b806303f69354146100fa57806307da68f514610116578063099a019d14610120575b600080fd5b61010360045481565b6040519081526020015b60405180910390f35b61011e6101fe565b005b61010361025f565b61011e61028c565b61010360005481565b60015461014c906001600160a01b031681565b6040516001600160a01b03909116815260200161010d565b61011e6103c1565b61011e610522565b61011e6105c0565b60055461014c906001600160a01b031681565b6007546101a190610100900460ff1681565b604051901515815260200161010d565b6007546101a19060ff1681565b60075461014c90630100000090046001600160a01b031681565b6007546101a19062010000900460ff1681565b61011e6101f9366004610d9b565b6106b4565b600754630100000090046001600160a01b0316331461021c57600080fd5b600754610100900460ff1661023057600080fd5b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055565b33600090815260036020526040812054819061027a9061091e565b905061028681336109c1565b91505090565b60005442111580156102a7575060075462010000900460ff16155b156102d457600054604051630a8d68c960e21b81526004016102cb91815260200190565b60405180910390fd5b60075460ff16156102e457600080fd5b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915560055490546002546001600160a01b039283169263a9059cbb9216906103379061091e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be9190610dd6565b50565b60005442111580156103dc575060075462010000900460ff16155b1561040057600054604051630a8d68c960e21b81526004016102cb91815260200190565b336000908152600360205260408120546104199061091e565b905060006104318261042c60025461091e565b610a84565b9050600061045461044a8361044f61044a600654610b04565b610b13565b610b22565b905061045f81610b36565b1561051d576104776104716000610bc7565b336109c1565b33600081815260036020526040908190209290925560055491517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810191909152602481018590526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156104f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051b9190610dd6565b505b505050565b600061052e6000610c37565b905060025460001415801561055157503360009081526003602052604090205415155b15610581573360009081526003602052604090205461057e906105739061091e565b61042c60025461091e565b90505b7f949363e3195c5d3f00a22817edc6ddbcdad4e43d37ad2981f5ebad5f6492ee846105ac8233610c96565b60405190815260200160405180910390a150565b60005442111580156105db575060075462010000900460ff16155b156105ff57600054604051630a8d68c960e21b81526004016102cb91815260200190565b3360009081526003602052604081205461061c906105739061091e565b9050600061063761063161044a600654610b04565b83610b22565b905061064281610b36565b156106b0576106596106546001610c37565b610ca5565b6006556106696104716000610bc7565b3360008181526003602090815260409182902093909355519081527f745c90b656b4aafe296c8ca35aeacfe56cb96c90e1d320e5da643fff1051b6c0910160405180910390a15b5050565b600054421015806106d2575060075462010000900460ff1615156001145b1561070f576000546040517f691e56820000000000000000000000000000000000000000000000000000000081526004016102cb91815260200190565b336000908152600360205260408120549061073161072c84610e5f565b610cb4565b905081600003610809576004805490600061074b83610f04565b919050555061075981610d1d565b33600081815260036020526040908190209290925560055491517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810191909152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156107df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108039190610dd6565b506108e8565b61081d6108186105738461091e565b610b36565b156108e85761082b81610d1d565b336000908152600360205260408120919091556108508261084b8561091e565b610d2d565b6005546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390529192506001600160a01b0316906323b872dd906064016020604051808303816000875af11580156108c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e59190610dd6565b50505b33600090815260036020526040902054600254158061091157506109116108186105738561091e565b1561051b57600255505050565b6000606463d2c135e560045b60f81b846040518363ffffffff1660e01b81526004016109789291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af1158015610997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bb9190610dd6565b92915050565b60006064633c6f0e6860045b60f81b8585604051602001610a0d919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401610a3a93929190610f60565b6020604051808303816000875af1158015610a59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7d9190610dd6565b9392505050565b6000606463813b2074610a9960048085610d3e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260448101859052606401610a3a565b6000606463d2c135e58261092a565b60006064631d79e49a8261092a565b6000606463fe9c73d1610a99838080610d3e565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015610b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe9190610dd6565b15159392505050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401610978565b60008082610c46576000610c49565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401610a3a565b60006064633c6f0e68826109cd565b6000606463c50c9c028261092a565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e1092610978927f0400000000000000000000000000000000000000000000000000000000000000929091600401610f60565b6000606463c50c9c02600461092a565b6000606463371d1bf2610a99600480855b6000816002811115610d5257610d52610f4a565b60ff166008846004811115610d6957610d69610f4a565b61ffff16901b61ffff166010866004811115610d8757610d87610f4a565b62ffffff16901b171760e81b949350505050565b600060208284031215610dad57600080fd5b813567ffffffffffffffff811115610dc457600080fd5b820160408185031215610a7d57600080fd5b600060208284031215610de857600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610e2857610e28610def565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e5757610e57610def565b604052919050565b600060408236031215610e7157600080fd5b610e79610e05565b8235815260208084013567ffffffffffffffff80821115610e9957600080fd5b9085019036601f830112610eac57600080fd5b813581811115610ebe57610ebe610def565b610ed084601f19601f84011601610e2e565b91508082523684828501011115610ee657600080fd5b80848401858401376000908201840152918301919091525092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610f4357634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052602160045260246000fd5b7fff000000000000000000000000000000000000000000000000000000000000008416815260006020848184015260606040840152835180606085015260005b81811015610fbc57858101830151858201608001528201610fa0565b506000608082860101526080601f19601f8301168501019250505094935050505056fea264697066735822122089c7f2cdaf6fa044d351ca1dc8f91a6ffdff12bab88111b1df8256773ed10def64736f6c63430008130033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063453afef411610097578063c5822c0d11610066578063c5822c0d146101b1578063ce606ee0146101be578063edfdc41c146101d8578063f358c1a5146101eb57600080fd5b8063453afef41461016c5780634e71d92d1461017457806355a373d61461017c578063bb4872de1461018f57600080fd5b80632a24f46c116100d35780632a24f46c146101285780633197cbb61461013057806338af3eed146101395780633ccfd60b1461016457600080fd5b806303f69354146100fa57806307da68f514610116578063099a019d14610120575b600080fd5b61010360045481565b6040519081526020015b60405180910390f35b61011e6101fe565b005b61010361025f565b61011e61028c565b61010360005481565b60015461014c906001600160a01b031681565b6040516001600160a01b03909116815260200161010d565b61011e6103c1565b61011e610522565b61011e6105c0565b60055461014c906001600160a01b031681565b6007546101a190610100900460ff1681565b604051901515815260200161010d565b6007546101a19060ff1681565b60075461014c90630100000090046001600160a01b031681565b6007546101a19062010000900460ff1681565b61011e6101f9366004610d9b565b6106b4565b600754630100000090046001600160a01b0316331461021c57600080fd5b600754610100900460ff1661023057600080fd5b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055565b33600090815260036020526040812054819061027a9061091e565b905061028681336109c1565b91505090565b60005442111580156102a7575060075462010000900460ff16155b156102d457600054604051630a8d68c960e21b81526004016102cb91815260200190565b60405180910390fd5b60075460ff16156102e457600080fd5b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915560055490546002546001600160a01b039283169263a9059cbb9216906103379061091e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be9190610dd6565b50565b60005442111580156103dc575060075462010000900460ff16155b1561040057600054604051630a8d68c960e21b81526004016102cb91815260200190565b336000908152600360205260408120546104199061091e565b905060006104318261042c60025461091e565b610a84565b9050600061045461044a8361044f61044a600654610b04565b610b13565b610b22565b905061045f81610b36565b1561051d576104776104716000610bc7565b336109c1565b33600081815260036020526040908190209290925560055491517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810191909152602481018590526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156104f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051b9190610dd6565b505b505050565b600061052e6000610c37565b905060025460001415801561055157503360009081526003602052604090205415155b15610581573360009081526003602052604090205461057e906105739061091e565b61042c60025461091e565b90505b7f949363e3195c5d3f00a22817edc6ddbcdad4e43d37ad2981f5ebad5f6492ee846105ac8233610c96565b60405190815260200160405180910390a150565b60005442111580156105db575060075462010000900460ff16155b156105ff57600054604051630a8d68c960e21b81526004016102cb91815260200190565b3360009081526003602052604081205461061c906105739061091e565b9050600061063761063161044a600654610b04565b83610b22565b905061064281610b36565b156106b0576106596106546001610c37565b610ca5565b6006556106696104716000610bc7565b3360008181526003602090815260409182902093909355519081527f745c90b656b4aafe296c8ca35aeacfe56cb96c90e1d320e5da643fff1051b6c0910160405180910390a15b5050565b600054421015806106d2575060075462010000900460ff1615156001145b1561070f576000546040517f691e56820000000000000000000000000000000000000000000000000000000081526004016102cb91815260200190565b336000908152600360205260408120549061073161072c84610e5f565b610cb4565b905081600003610809576004805490600061074b83610f04565b919050555061075981610d1d565b33600081815260036020526040908190209290925560055491517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810191909152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156107df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108039190610dd6565b506108e8565b61081d6108186105738461091e565b610b36565b156108e85761082b81610d1d565b336000908152600360205260408120919091556108508261084b8561091e565b610d2d565b6005546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390529192506001600160a01b0316906323b872dd906064016020604051808303816000875af11580156108c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e59190610dd6565b50505b33600090815260036020526040902054600254158061091157506109116108186105738561091e565b1561051b57600255505050565b6000606463d2c135e560045b60f81b846040518363ffffffff1660e01b81526004016109789291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af1158015610997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bb9190610dd6565b92915050565b60006064633c6f0e6860045b60f81b8585604051602001610a0d919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401610a3a93929190610f60565b6020604051808303816000875af1158015610a59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7d9190610dd6565b9392505050565b6000606463813b2074610a9960048085610d3e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260448101859052606401610a3a565b6000606463d2c135e58261092a565b60006064631d79e49a8261092a565b6000606463fe9c73d1610a99838080610d3e565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015610b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe9190610dd6565b15159392505050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401610978565b60008082610c46576000610c49565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401610a3a565b60006064633c6f0e68826109cd565b6000606463c50c9c028261092a565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e1092610978927f0400000000000000000000000000000000000000000000000000000000000000929091600401610f60565b6000606463c50c9c02600461092a565b6000606463371d1bf2610a99600480855b6000816002811115610d5257610d52610f4a565b60ff166008846004811115610d6957610d69610f4a565b61ffff16901b61ffff166010866004811115610d8757610d87610f4a565b62ffffff16901b171760e81b949350505050565b600060208284031215610dad57600080fd5b813567ffffffffffffffff811115610dc457600080fd5b820160408185031215610a7d57600080fd5b600060208284031215610de857600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610e2857610e28610def565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e5757610e57610def565b604052919050565b600060408236031215610e7157600080fd5b610e79610e05565b8235815260208084013567ffffffffffffffff80821115610e9957600080fd5b9085019036601f830112610eac57600080fd5b813581811115610ebe57610ebe610def565b610ed084601f19601f84011601610e2e565b91508082523684828501011115610ee657600080fd5b80848401858401376000908201840152918301919091525092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610f4357634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052602160045260246000fd5b7fff000000000000000000000000000000000000000000000000000000000000008416815260006020848184015260606040840152835180606085015260005b81811015610fbc57858101830151858201608001528201610fa0565b506000608082860101526080601f19601f8301168501019250505094935050505056fea264697066735822122089c7f2cdaf6fa044d351ca1dc8f91a6ffdff12bab88111b1df8256773ed10def64736f6c63430008130033",
"linkReferences": {},
"deployedLinkReferences": {}
}