UNPKG

@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.

271 lines (270 loc) 23.8 kB
{ "_format": "hh-sol-artifact-1", "contractName": "DataOnChain", "sourceName": "contracts/DataOnChain.sol", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_from", "type": "address" }, { "components": [ { "internalType": "ctUint64[]", "name": "value", "type": "uint256[]" } ], "indexed": false, "internalType": "struct ctString", "name": "ctUserSomeEncryptedStringValue", "type": "tuple" } ], "name": "UserEncryptedStringValue", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": false, "internalType": "ctUint64", "name": "ctUserSomeEncryptedValue", "type": "uint256" } ], "name": "UserEncryptedValue", "type": "event" }, { "inputs": [], "name": "add", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getNetworkSomeEncryptedValue", "outputs": [ { "internalType": "ctUint64", "name": "ctSomeEncryptedValue", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNetworkSomeEncryptedValueEncryptedInput", "outputs": [ { "internalType": "ctUint64", "name": "ctSomeEncryptedValue", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSomeValue", "outputs": [ { "internalType": "uint64", "name": "value", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getUserArithmeticResult", "outputs": [ { "internalType": "ctUint64", "name": "value", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getUserSomeEncryptedStringEncryptedInput", "outputs": [ { "components": [ { "internalType": "ctUint64[]", "name": "value", "type": "uint256[]" } ], "internalType": "struct ctString", "name": "ctSomeEncryptedValue", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getUserSomeEncryptedValue", "outputs": [ { "internalType": "ctUint64", "name": "ctSomeEncryptedValue", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getUserSomeEncryptedValueEncryptedInput", "outputs": [ { "internalType": "ctUint64", "name": "ctSomeEncryptedValue", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "ctUint64", "name": "networkEncrypted", "type": "uint256" } ], "name": "setNetworkSomeEncryptedValue", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "ctUint64[]", "name": "value", "type": "uint256[]" } ], "internalType": "struct ctString", "name": "ciphertext", "type": "tuple" }, { "internalType": "bytes[]", "name": "signature", "type": "bytes[]" } ], "internalType": "struct itString", "name": "itValue", "type": "tuple" } ], "name": "setSomeEncryptedStringEncryptedInput", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "_value", "type": "uint64" } ], "name": "setSomeEncryptedValue", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "ctUint64", "name": "ciphertext", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "internalType": "struct itUint64", "name": "itValue", "type": "tuple" } ], "name": "setSomeEncryptedValueEncryptedInput", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setUserSomeEncryptedStringEncryptedInput", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setUserSomeEncryptedValue", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setUserSomeEncryptedValueEncryptedInput", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160401b031916600517905561110c806100336000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80639c82c7c711610097578063af384ac711610066578063af384ac71461018d578063bbde9358146101a0578063d7c49601146101b3578063fee511d6146101c857600080fd5b80639c82c7c71461014e5780639f3f69de14610161578063a2e1286914610169578063a40674b71461017157600080fd5b806361eeffcd116100d357806361eeffcd1461012357806371091de31461012b57806380b9de4b146101335780638d7eadec1461014657600080fd5b806305bdf1db146100fa57806318312545146101115780634f2be91f14610119575b600080fd5b6003545b6040519081526020015b60405180910390f35b6001546100fe565b6101216101d0565b005b61012161020e565b6004546100fe565b610121610141366004610bbf565b610265565b6005546100fe565b61012161015c366004610bfc565b600355565b6101216102a0565b6002546100fe565b60005460405167ffffffffffffffff9091168152602001610108565b61012161019b366004610c15565b61035c565b6101216101ae366004610bbf565b610379565b6101bb61039e565b6040516101089190610c3f565b61012161040c565b60006101dd60035461045c565b905060006101ec60045461045c565b905060006101fa83836104ff565b905061020681336105c5565b600555505050565b600061021b60045461045c565b905061022781336105c5565b600281905560405190815233907f958094500e56c659b01cdefb25c66c88f025c3c800f69b2a2141f8c73b30e056906020015b60405180910390a250565b600061027861027383610e3b565b61064b565b9050610283816107cf565b8051805160079161029991839160200190610b47565b5050505050565b6040805160078054602081810284018501855283018181526000946103049493928492918491908401828280156102f657602002820191906000526020600020905b8154815260200190600101908083116102e2575b50505050508152505061089f565b90506103108133610967565b8051805160069161032691839160200190610b47565b50506040513391507f8137412c935bcf66b07e7f46876a6a63d0f08458ada5df0d661d96dc611c45d19061025a90600690610f2b565b600061036782610a39565b905061037281610a8d565b6003555050565b600061038c61038783610f7c565b610a9d565b905061039781610a8d565b6004555050565b604080516020810190915260608152604080516006805460208181028401850185528301818152929391928492909184918401828280156103fe57602002820191906000526020600020905b8154815260200190600101908083116103ea575b505050505081525050905090565b600061041960035461045c565b905061042581336105c5565b600181905560405190815233907f958094500e56c659b01cdefb25c66c88f025c3c800f69b2a2141f8c73b30e0569060200161025a565b6000606463d2c135e560045b60f81b846040518363ffffffff1660e01b81526004016104b69291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af11580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f99190610fe2565b92915050565b60006064638c5d015061051460048085610aea565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561059a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105be9190610fe2565b9392505050565b60408051606083901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201528151601481830301815260348201928390527f3c6f0e6800000000000000000000000000000000000000000000000000000000909252600091606491633c6f0e689161057b91600160fa1b918891603801610ffb565b6040805160208101909152606081526020820151518251515181146106d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d50435f434f52453a20494e56414c49445f494e5055545f5445585400000000604482015260640160405180910390fd5b600060405180602001604052808367ffffffffffffffff8111156106f6576106f6610c8f565b60405190808252806020026020018201604052801561071f578160200160208202803683370190505b50905260408051808201909152600081526060602082015290915060005b838110156107c55785515180518290811061075a5761075a61107a565b602090810291909101810151835286015180518290811061077d5761077d61107a565b6020026020010151826020018190525061079682610a9d565b83518051839081106107aa576107aa61107a565b60209081029190910101526107be81611090565b905061073d565b5090949350505050565b6040805160208101909152606081528151516040805160208101909152600090808367ffffffffffffffff81111561080957610809610c8f565b604051908082528060200260200182016040528015610832578160200160208202803683370190505b509052905060005b82811015610897576108688560000151828151811061085b5761085b61107a565b6020026020010151610a8d565b825180518390811061087c5761087c61107a565b602090810291909101015261089081611090565b905061083a565b509392505050565b6040805160208101909152606081528151516040805160208101909152600090808367ffffffffffffffff8111156108d9576108d9610c8f565b604051908082528060200260200182016040528015610902578160200160208202803683370190505b509052905060005b82811015610897576109388560000151828151811061092b5761092b61107a565b602002602001015161045c565b825180518390811061094c5761094c61107a565b602090810291909101015261096081611090565b905061090a565b6040805160208101909152606081528251516040805160208101909152600090808367ffffffffffffffff8111156109a1576109a1610c8f565b6040519080825280602002602001820160405280156109ca578160200160208202803683370190505b509052905060005b82811015610a3057610a01866000015182815181106109f3576109f361107a565b6020026020010151866105c5565b8251805183908110610a1557610a1561107a565b6020908102919091010152610a2981611090565b90506109d2565b50949350505050565b6040517fd9b60b60000000000000000000000000000000000000000000000000000000008152600160fa1b600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016104b6565b6000606463c50c9c026004610468565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e10926104b692600160fa1b929091600401610ffb565b6000816002811115610afe57610afe610fcc565b60ff166008846004811115610b1557610b15610fcc565b61ffff16901b61ffff166010866004811115610b3357610b33610fcc565b62ffffff16901b171760e81b949350505050565b828054828255906000526020600020908101928215610b82579160200282015b82811115610b82578251825591602001919060010190610b67565b50610b8e929150610b92565b5090565b5b80821115610b8e5760008155600101610b93565b600060408284031215610bb957600080fd5b50919050565b600060208284031215610bd157600080fd5b813567ffffffffffffffff811115610be857600080fd5b610bf484828501610ba7565b949350505050565b600060208284031215610c0e57600080fd5b5035919050565b600060208284031215610c2757600080fd5b813567ffffffffffffffff811681146105be57600080fd5b6020808252825182820182905280516040840181905260009291820190839060608601905b80831015610c845783518252928401926001929092019190840190610c64565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610cc857610cc8610c8f565b60405290565b6040516020810167ffffffffffffffff81118282101715610cc857610cc8610c8f565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d1a57610d1a610c8f565b604052919050565b600067ffffffffffffffff821115610d3c57610d3c610c8f565b5060051b60200190565b600082601f830112610d5757600080fd5b813567ffffffffffffffff811115610d7157610d71610c8f565b610d846020601f19601f84011601610cf1565b818152846020838601011115610d9957600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610dc757600080fd5b81356020610ddc610dd783610d22565b610cf1565b82815260059290921b84018101918181019086841115610dfb57600080fd5b8286015b84811015610c8457803567ffffffffffffffff811115610e1f5760008081fd5b610e2d8986838b0101610d46565b845250918301918301610dff565b600060408236031215610e4d57600080fd5b610e55610ca5565b823567ffffffffffffffff80821115610e6d57600080fd5b81850191506020808336031215610e8357600080fd5b610e8b610cce565b833583811115610e9a57600080fd5b939093019236601f850112610eae57600080fd5b8335610ebc610dd782610d22565b81815260059190911b85018301908381019036831115610edb57600080fd5b958401955b82871015610ef957863582529584019590840190610ee0565b83525050845285810135925081831115610f1257600080fd5b610f1e36848801610db6565b9084015250909392505050565b600060208083526040830181828501528085548083526060860191508660005283600020925060005b81811015610f7057835483526001938401939285019201610f54565b50909695505050505050565b600060408236031215610f8e57600080fd5b610f96610ca5565b82358152602083013567ffffffffffffffff811115610fb457600080fd5b610fc036828601610d46565b60208301525092915050565b634e487b7160e01b600052602160045260246000fd5b600060208284031215610ff457600080fd5b5051919050565b7fff000000000000000000000000000000000000000000000000000000000000008416815260006020848184015260606040840152835180606085015260005b818110156110575785810183015185820160800152820161103b565b506000608082860101526080601f19601f83011685010192505050949350505050565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036110cf57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220bf7aeec3848d18f7506a9e0ef54856771acf3bd30f7751163c0516373dac311f64736f6c63430008130033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80639c82c7c711610097578063af384ac711610066578063af384ac71461018d578063bbde9358146101a0578063d7c49601146101b3578063fee511d6146101c857600080fd5b80639c82c7c71461014e5780639f3f69de14610161578063a2e1286914610169578063a40674b71461017157600080fd5b806361eeffcd116100d357806361eeffcd1461012357806371091de31461012b57806380b9de4b146101335780638d7eadec1461014657600080fd5b806305bdf1db146100fa57806318312545146101115780634f2be91f14610119575b600080fd5b6003545b6040519081526020015b60405180910390f35b6001546100fe565b6101216101d0565b005b61012161020e565b6004546100fe565b610121610141366004610bbf565b610265565b6005546100fe565b61012161015c366004610bfc565b600355565b6101216102a0565b6002546100fe565b60005460405167ffffffffffffffff9091168152602001610108565b61012161019b366004610c15565b61035c565b6101216101ae366004610bbf565b610379565b6101bb61039e565b6040516101089190610c3f565b61012161040c565b60006101dd60035461045c565b905060006101ec60045461045c565b905060006101fa83836104ff565b905061020681336105c5565b600555505050565b600061021b60045461045c565b905061022781336105c5565b600281905560405190815233907f958094500e56c659b01cdefb25c66c88f025c3c800f69b2a2141f8c73b30e056906020015b60405180910390a250565b600061027861027383610e3b565b61064b565b9050610283816107cf565b8051805160079161029991839160200190610b47565b5050505050565b6040805160078054602081810284018501855283018181526000946103049493928492918491908401828280156102f657602002820191906000526020600020905b8154815260200190600101908083116102e2575b50505050508152505061089f565b90506103108133610967565b8051805160069161032691839160200190610b47565b50506040513391507f8137412c935bcf66b07e7f46876a6a63d0f08458ada5df0d661d96dc611c45d19061025a90600690610f2b565b600061036782610a39565b905061037281610a8d565b6003555050565b600061038c61038783610f7c565b610a9d565b905061039781610a8d565b6004555050565b604080516020810190915260608152604080516006805460208181028401850185528301818152929391928492909184918401828280156103fe57602002820191906000526020600020905b8154815260200190600101908083116103ea575b505050505081525050905090565b600061041960035461045c565b905061042581336105c5565b600181905560405190815233907f958094500e56c659b01cdefb25c66c88f025c3c800f69b2a2141f8c73b30e0569060200161025a565b6000606463d2c135e560045b60f81b846040518363ffffffff1660e01b81526004016104b69291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af11580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f99190610fe2565b92915050565b60006064638c5d015061051460048085610aea565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561059a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105be9190610fe2565b9392505050565b60408051606083901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201528151601481830301815260348201928390527f3c6f0e6800000000000000000000000000000000000000000000000000000000909252600091606491633c6f0e689161057b91600160fa1b918891603801610ffb565b6040805160208101909152606081526020820151518251515181146106d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d50435f434f52453a20494e56414c49445f494e5055545f5445585400000000604482015260640160405180910390fd5b600060405180602001604052808367ffffffffffffffff8111156106f6576106f6610c8f565b60405190808252806020026020018201604052801561071f578160200160208202803683370190505b50905260408051808201909152600081526060602082015290915060005b838110156107c55785515180518290811061075a5761075a61107a565b602090810291909101810151835286015180518290811061077d5761077d61107a565b6020026020010151826020018190525061079682610a9d565b83518051839081106107aa576107aa61107a565b60209081029190910101526107be81611090565b905061073d565b5090949350505050565b6040805160208101909152606081528151516040805160208101909152600090808367ffffffffffffffff81111561080957610809610c8f565b604051908082528060200260200182016040528015610832578160200160208202803683370190505b509052905060005b82811015610897576108688560000151828151811061085b5761085b61107a565b6020026020010151610a8d565b825180518390811061087c5761087c61107a565b602090810291909101015261089081611090565b905061083a565b509392505050565b6040805160208101909152606081528151516040805160208101909152600090808367ffffffffffffffff8111156108d9576108d9610c8f565b604051908082528060200260200182016040528015610902578160200160208202803683370190505b509052905060005b82811015610897576109388560000151828151811061092b5761092b61107a565b602002602001015161045c565b825180518390811061094c5761094c61107a565b602090810291909101015261096081611090565b905061090a565b6040805160208101909152606081528251516040805160208101909152600090808367ffffffffffffffff8111156109a1576109a1610c8f565b6040519080825280602002602001820160405280156109ca578160200160208202803683370190505b509052905060005b82811015610a3057610a01866000015182815181106109f3576109f361107a565b6020026020010151866105c5565b8251805183908110610a1557610a1561107a565b6020908102919091010152610a2981611090565b90506109d2565b50949350505050565b6040517fd9b60b60000000000000000000000000000000000000000000000000000000008152600160fa1b600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016104b6565b6000606463c50c9c026004610468565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e10926104b692600160fa1b929091600401610ffb565b6000816002811115610afe57610afe610fcc565b60ff166008846004811115610b1557610b15610fcc565b61ffff16901b61ffff166010866004811115610b3357610b33610fcc565b62ffffff16901b171760e81b949350505050565b828054828255906000526020600020908101928215610b82579160200282015b82811115610b82578251825591602001919060010190610b67565b50610b8e929150610b92565b5090565b5b80821115610b8e5760008155600101610b93565b600060408284031215610bb957600080fd5b50919050565b600060208284031215610bd157600080fd5b813567ffffffffffffffff811115610be857600080fd5b610bf484828501610ba7565b949350505050565b600060208284031215610c0e57600080fd5b5035919050565b600060208284031215610c2757600080fd5b813567ffffffffffffffff811681146105be57600080fd5b6020808252825182820182905280516040840181905260009291820190839060608601905b80831015610c845783518252928401926001929092019190840190610c64565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610cc857610cc8610c8f565b60405290565b6040516020810167ffffffffffffffff81118282101715610cc857610cc8610c8f565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d1a57610d1a610c8f565b604052919050565b600067ffffffffffffffff821115610d3c57610d3c610c8f565b5060051b60200190565b600082601f830112610d5757600080fd5b813567ffffffffffffffff811115610d7157610d71610c8f565b610d846020601f19601f84011601610cf1565b818152846020838601011115610d9957600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610dc757600080fd5b81356020610ddc610dd783610d22565b610cf1565b82815260059290921b84018101918181019086841115610dfb57600080fd5b8286015b84811015610c8457803567ffffffffffffffff811115610e1f5760008081fd5b610e2d8986838b0101610d46565b845250918301918301610dff565b600060408236031215610e4d57600080fd5b610e55610ca5565b823567ffffffffffffffff80821115610e6d57600080fd5b81850191506020808336031215610e8357600080fd5b610e8b610cce565b833583811115610e9a57600080fd5b939093019236601f850112610eae57600080fd5b8335610ebc610dd782610d22565b81815260059190911b85018301908381019036831115610edb57600080fd5b958401955b82871015610ef957863582529584019590840190610ee0565b83525050845285810135925081831115610f1257600080fd5b610f1e36848801610db6565b9084015250909392505050565b600060208083526040830181828501528085548083526060860191508660005283600020925060005b81811015610f7057835483526001938401939285019201610f54565b50909695505050505050565b600060408236031215610f8e57600080fd5b610f96610ca5565b82358152602083013567ffffffffffffffff811115610fb457600080fd5b610fc036828601610d46565b60208301525092915050565b634e487b7160e01b600052602160045260246000fd5b600060208284031215610ff457600080fd5b5051919050565b7fff000000000000000000000000000000000000000000000000000000000000008416815260006020848184015260606040840152835180606085015260005b818110156110575785810183015185820160800152820161103b565b506000608082860101526080601f19601f83011685010192505050949350505050565b634e487b7160e01b600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036110cf57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220bf7aeec3848d18f7506a9e0ef54856771acf3bd30f7751163c0516373dac311f64736f6c63430008130033", "linkReferences": {}, "deployedLinkReferences": {} }