diff --git a/compile/BTSIDAC.abi b/compile/BTSIDAC.abi new file mode 100644 index 0000000000000000000000000000000000000000..7fd214c0630e71623832562aa3f4ca17344d59ac --- /dev/null +++ b/compile/BTSIDAC.abi @@ -0,0 +1 @@ +[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"uint256","name":"DACID","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"isApproval","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"DACID","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":true,"internalType":"uint256","name":"categoryID","type":"uint256"},{"indexed":false,"internalType":"string","name":"categoryName","type":"string"},{"indexed":false,"internalType":"string","name":"metadata","type":"string"}],"name":"CreateCategory","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"uint256","name":"categoryID","type":"uint256"}],"name":"FreezeCategory","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"uint256","name":"DACID","type":"uint256"}],"name":"FreezeDAC","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"categoryID","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"DACID","type":"uint256"},{"indexed":false,"internalType":"string","name":"extData","type":"string"}],"name":"Mint","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"DACID","type":"uint256"},{"indexed":false,"internalType":"string","name":"extData","type":"string"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"uint256","name":"categoryID","type":"uint256"}],"name":"UnfreezeCategory","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"uint256","name":"DACID","type":"uint256"}],"name":"UnfreezeDAC","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"DACID","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"DACID","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"categoryName","type":"string"},{"internalType":"string","name":"metadata","type":"string"}],"name":"createCategory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"categoryID","type":"uint256"}],"name":"freezeCategory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"DACIDs","type":"uint256[]"}],"name":"freezeDAC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"DACID","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDACByIndex","outputs":[{"internalType":"uint256","name":"DACID","type":"uint256"},{"internalType":"uint256","name":"categoryID","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"string","name":"metadata","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"categoryID","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"metadata","type":"string"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"categoryID","type":"uint256"}],"name":"queryCategory","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"categoryName","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"string","name":"metadata","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"DACID","type":"uint256"}],"name":"queryDAC","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"categoryID","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"string","name":"metadata","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"isApproval","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"categoryID","type":"uint256"}],"name":"totalSupplyOfCategory","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"DACID","type":"uint256"},{"internalType":"string","name":"extData","type":"string"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"DACIDs","type":"uint256[]"},{"internalType":"string","name":"extData","type":"string"}],"name":"transferFromBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"categoryID","type":"uint256"}],"name":"unfreezeCategory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"DACIDs","type":"uint256[]"}],"name":"unfreezeDAC","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/compile/BTSIDAC.bin b/compile/BTSIDAC.bin new file mode 100644 index 0000000000000000000000000000000000000000..dea7f94db84e4627e834a14d7ef0a197b2e9fd59 --- /dev/null +++ b/compile/BTSIDAC.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50612a40806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635089e2c8116100c3578063ca97c9b61161007c578063ca97c9b6146102f3578063cc8be70e14610316578063d86e29e214610329578063deca7fb714610331578063ea605f3d14610355578063ffd89b6f1461035d57600080fd5b80635089e2c814610259578063918268151461027e57806392ec0cdd146102915780639b08e7f8146102a45780639cb97a52146102b7578063b61b2b39146102e057600080fd5b80632ffdc5f8116101155780632ffdc5f8146101c7578063391edc16146101da5780633b3987fe146101ed5780633e5a304c14610200578063441f819c146102235780634c00105f1461023657600080fd5b80630256e2781461015257806304ddbcf21461016957806316cad12a1461017e5780631f2d486014610191578063286806cc146101a4575b600080fd5b6066545b6040519081526020015b60405180910390f35b61017c61017736600461229f565b610370565b005b61017c61018c3660046122fd565b610405565b61017c61019f36600461231f565b6104f2565b6101b76101b2366004612349565b610653565b60405161016094939291906123af565b61017c6101d53660046123e6565b610719565b61017c6101e8366004612349565b6107af565b61017c6101fb36600461229f565b61088b565b61015661020e366004612349565b60009081526069602052604090206005015490565b61017c610231366004612464565b610912565b6102496102443660046124d0565b610a35565b6040519015158152602001610160565b6033546001600160a01b03165b6040516001600160a01b039091168152602001610160565b61017c61028c366004612503565b610a65565b61017c61029f366004612349565b610b8d565b61017c6102b2366004612594565b610c72565b6102666102c5366004612349565b6000908152606c60205260409020546001600160a01b031690565b61017c6102ee366004612349565b610cfd565b61030661030136600461231f565b610de0565b6040516101609493929190612603565b6101566103243660046122fd565b610f6e565b61017c610f8c565b61034461033f366004612349565b611001565b604051610160959493929190612628565b61017c611171565b61017c61036b366004612675565b6111f7565b6033546001600160a01b031633146103a457604051636381e58960e11b815260040161039b906126c0565b60405180910390fd5b806103c257604051636381e58960e11b815260040161039b906126f5565b60005b81811015610400576103ee8383838181106103e2576103e2612722565b905060200201356113c6565b806103f88161274e565b9150506103c5565b505050565b6033546001600160a01b0316331461043057604051636381e58960e11b815260040161039b906126c0565b6001600160a01b03811661049657604051636381e58960e11b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161039b565b6033546040516001600160a01b038084169216907f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152606a60205260409020600101546001600160a01b0316331461055c57604051636381e58960e11b815260206004820152601b60248201527f4441433a6f6e6c7920444143206f776e65722063616e2063616c6c0000000000604482015260640161039b565b6000818152606a60205260409020600101546001600160a01b038381169116141561059a57604051636381e58960e11b815260040161039b90612769565b6000818152606a6020526040902060030154156105fa57604051636381e58960e11b815260206004820152601f60248201527f4441433a6f6e6c79206e6f726d616c204441432063616e20617070726f766500604482015260640161039b565b6000818152606c602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839233917fd1e45707b3f71c77903b61f04c900f772db264b9bf618f1cc3308fb516eb61699190a45050565b6000818152606a60205260409020600181015460028201546003830154600490930180546001600160a01b0390931693919260609190610692906127ae565b80601f01602080910402602001604051908101604052809291908181526020018280546106be906127ae565b801561070b5780601f106106e05761010080835404028352916020019161070b565b820191906000526020600020905b8154815290600101906020018083116106ee57829003601f168201915b505050505090509193509193565b336001600160a01b038316141561074357604051636381e58960e11b815260040161039b90612769565b336000818152606d602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f34cc9ec6b85c217ac6bd5f7b86411e4e4e40d816d5d17725c4dec1f0901d9074910160405180910390a35050565b6107b88161142a565b6107c2338261147c565b6107df57604051636381e58960e11b815260040161039b906127e9565b6000818152606a60205260409020600301541561083f57604051636381e58960e11b815260206004820152601c60248201527f4441433a6f6e6c79206e6f726d616c204441432063616e206275726e00000000604482015260640161039b565b6000818152606a6020908152604080832060020154835260699091529020600301541561087f57604051636381e58960e11b815260040161039b90612836565b610888816114fa565b50565b6033546001600160a01b031633146108b657604051636381e58960e11b815260040161039b906126c0565b806108d457604051636381e58960e11b815260040161039b906126f5565b60005b81811015610400576109008383838181106108f4576108f4612722565b90506020020135611616565b8061090a8161274e565b9150506108d7565b6109646040518060200160405280600081525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506116789050565b156109bc57604051636381e58960e11b815260206004820152602160248201527f4441433a63617465676f72794e616d652063616e206e6f7420626520656d70746044820152607960f81b606482015260840161039b565b610a2f84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f880181900481028201810190925286815292508691508590819084018382808284376000920191909152506116db92505050565b50505050565b6001600160a01b038083166000908152606d602090815260408083209385168352929052205460ff165b92915050565b82610a8357604051636381e58960e11b815260040161039b906126f5565b610ad8868686866000818110610a9b57610a9b612722565b6020029190910135905060005b6040519080825280601f01601f191660200182016040528015610ad2576020820181803683370190505b50611810565b610b4257604051636381e58960e11b815260206004820152603460248201527f4441433a63616e74206e6f74207472616e7366657220746f206e6f6e204441436044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161039b565b60005b83811015610b8457610b728787878785818110610b6457610b64612722565b9050602002013586866118bf565b80610b7c8161274e565b915050610b45565b50505050505050565b6033546001600160a01b03163314610bb857604051636381e58960e11b815260040161039b906126c0565b610bc181611ac8565b600160008281526069602052604090206003015414610c3157604051636381e58960e11b815260206004820152602560248201527f4441433a6f6e6c7920667265657a652063617465676f72792063616e20756e666044820152647265657a6560d81b606482015260840161039b565b60008181526069602052604080822060030182905551829133917f8171c3e7cd97b6ad5e189e7564be1f3291b03d6802b0eac2293636e8277f0e319190a350565b610c7f8585856000610aa8565b610ce957604051636381e58960e11b815260206004820152603460248201527f4441433a2063616e206e6f74207472616e7366657220746f206e6f6e204441436044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161039b565b610cf685858585856118bf565b5050505050565b6033546001600160a01b03163314610d2857604051636381e58960e11b815260040161039b906126c0565b610d3181611ac8565b60008181526069602052604090206003015415610d9d57604051636381e58960e11b815260206004820152602360248201527f4441433a6f6e6c79206e6f726d616c2063617465676f72792063616e20667265604482015262657a6560e81b606482015260840161039b565b600081815260696020526040808220600160039091015551829133917f6790b7a7222403863d6359169e1769717ae3d64801f03a6b9433bcea146d1c839190a350565b6000806000606060008511610e3857604051636381e58960e11b815260206004820152601d60248201527f4441433a696e646578206d7573742067726561746572207468616e2030000000604482015260640161039b565b610e64610e46600187612877565b6001600160a01b0388166000908152606b6020526040902090611b24565b935060008411610eb757604051636381e58960e11b815260206004820152601860248201527f4441433a6e6f20444143206174207468697320696e6465780000000000000000604482015260640161039b565b6000848152606a602052604090206002810154600382015460049092018054919550919350610ee5906127ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610f11906127ae565b8015610f5e5780601f10610f3357610100808354040283529160200191610f5e565b820191906000526020600020905b815481529060010190602001808311610f4157829003601f168201915b5050505050905092959194509250565b6001600160a01b0381166000908152606b6020526040812054610a5f565b6033546001600160a01b03163314610fb757604051636381e58960e11b815260040161039b906126c0565b6033546040516000916001600160a01b0316907f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d0908390a3603380546001600160a01b0319169055565b600081815260696020526040812080546001909101805491926060929091829184919061102d906127ae565b80601f0160208091040260200160405190810160405280929190818152602001828054611059906127ae565b80156110a65780601f1061107b576101008083540402835291602001916110a6565b820191906000526020600020905b81548152906001019060200180831161108957829003601f168201915b505050600089815260696020526040902060028101546003820154600490920180549599506001600160a01b039091169750909550926110e8925090506127ae565b80601f0160208091040260200160405190810160405280929190818152602001828054611114906127ae565b80156111615780601f1061113657610100808354040283529160200191611161565b820191906000526020600020905b81548152906001019060200180831161114457829003601f168201915b5050505050905091939590929450565b600054610100900460ff16806111865750303b155b80611194575060005460ff16155b6111b157604051636381e58960e11b815260040161039b9061288e565b600054610100900460ff161580156111d3576000805461ffff19166101011790555b6111db611bab565b6111e3611c1d565b8015610888576000805461ff001916905550565b61120085611ac8565b6000858152606960205260409020600201546001600160a01b0316331461126a57604051636381e58960e11b815260206004820181905260248201527f4441433a6f6e6c792063617465676f7279206f776e65722063616e206d696e74604482015260640161039b565b600085815260696020526040902060030154156112de57604051636381e58960e11b815260206004820152602b60248201527f4441433a6f6e6c792063617465676f727920737461747573206973206e6f726d60448201526a185b0818d85b881b5a5b9d60aa1b606482015260840161039b565b6000841161133e57604051636381e58960e11b815260206004820152602660248201527f4441433a6d696e7420616d6f756e74206d7573742067726561746572207468616044820152656e207a65726f60d01b606482015260840161039b565b6001600160a01b03831661139557604051636381e58960e11b815260206004820181905260248201527f4441433a63616e206e6f74206d696e7420746f207a65726f2061646472657373604482015260640161039b565b60005b848110156113be576113ac84878585611d5c565b806113b68161274e565b915050611398565b505050505050565b6113cf8161142a565b60016000828152606a60205260409020600301541415610888576000818152606a602052604080822060030182905551829133917f7fc84bbf5f6aa9afb4daed41edce6598ddc95f8dd2c17399ab3bf775c637d89d9190a350565b6000818152606a602052604090205461088857604051636381e58960e11b8152602060048201526013602482015272111050ce911050d251081b9bdd08195e1a5cdd606a1b604482015260640161039b565b6000818152606a60205260408120600101546001600160a01b039081169084168114806114ce57506001600160a01b038082166000908152606d602090815260408083209388168352929052205460ff165b806114f257506000838152606c60205260409020546001600160a01b038581169116145b949350505050565b6000818152606a6020908152604080832060010154606c835281842080546001600160a01b03191690556001600160a01b0316808452606b90925282209091906115449084611f4a565b506001600160a01b0381166000908152606b60205260409020611567908461203d565b506000838152606a602090815260408083206001810180546001600160a01b0319166001600160a01b03878116918217909255600260039093019290925582518481529384019490945286939092908616917f0e06b20f2439cf138eb929526b10b2f6be289aa44858d643f4b18a56f270a705910160405180910390a4604051839033907fc5cfb20a182ba4b800686ac3d941ef8a395ec1bbf151ed8db9b9daec7a67f9e790600090a3505050565b61161f8161142a565b6000818152606a6020526040902060030154610888576000818152606a6020526040808220600160039091015551829133917f97b179d991379a1ceca6ea8271f229aaa1ee8dd74df21f9236c5379df138f42e9190a350565b6000808360405160200161168c91906128dc565b6040516020818303038152906040528051906020012090506000836040516020016116b791906128dc565b60408051601f19818403018152919052805160209091012091909114949350505050565b6067546040805160c081018252828152602080820186815233838501526000606084018190526080840187905260a08401819052858152606983529390932082518155925180519293849390926117399260018501929101906121ba565b5060408201516002820180546001600160a01b0319166001600160a01b0390921691909117905560608201516003820155608082015180516117859160048401916020909101906121ba565b5060a082015181600501559050506001606560008282546117a691906128ef565b925050819055506001606760008282546117c091906128ef565b90915550829050336001600160a01b03167f9fcb3fde540f1319bf07575fe9913e34b82a0ed274f00ffa218e9bb779b68ed28686604051611802929190612907565b60405180910390a350505050565b60006001600160a01b0384163b611829575060016114f2565b604051637e8c1fc960e11b81526000906001600160a01b0386169063fd183f929061185e908990899089908990600401612935565b6020604051808303816000875af115801561187d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a19190612968565b6001600160e01b031916637e8c1fc960e11b14915050949350505050565b6118c9338461147c565b6118e657604051636381e58960e11b815260040161039b906127e9565b6001600160a01b03841661194e57604051636381e58960e11b815260206004820152602860248201527f4441433a63616e206e6f74207472616e7366657220746f20746865207a65726f604482015267206164647265737360c01b606482015260840161039b565b6000838152606a6020526040812060020154906000828152606960205260409020600301541461199157604051636381e58960e11b815260040161039b90612836565b6000848152606a6020526040902060030154156119f157604051636381e58960e11b815260206004820152601c60248201527f4441433a44414320737461747573206973206e6f74206e6f726d616c00000000604482015260640161039b565b6000848152606c6020908152604080832080546001600160a01b03191690556001600160a01b0389168352606b9091529020611a2d9085611f4a565b506001600160a01b0385166000908152606b60205260409020611a50908561203d565b506000848152606a60205260409081902060010180546001600160a01b0319166001600160a01b0388811691821790925591518692918916907f0e06b20f2439cf138eb929526b10b2f6be289aa44858d643f4b18a56f270a70590611ab890889088906129bb565b60405180910390a4505050505050565b60008181526069602052604090205461088857604051636381e58960e11b815260206004820152601b60248201527f4441433a63617465676f727920646f6573206e6f742065786973740000000000604482015260640161039b565b81546000908210611b8357604051636381e58960e11b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b606482015260840161039b565b826000018281548110611b9857611b98612722565b9060005260206000200154905092915050565b600054610100900460ff1680611bc05750303b155b80611bce575060005460ff16155b611beb57604051636381e58960e11b815260040161039b9061288e565b600054610100900460ff16158015611c0d576000805461ffff19166101011790555b611c1561208c565b6111e3612101565b600054610100900460ff1680611c325750303b155b80611c40575060005460ff16155b611c5d57604051636381e58960e11b815260040161039b9061288e565b600054610100900460ff16158015611c7f576000805461ffff19166101011790555b60675415611ce157604051636381e58960e11b815260206004820152602860248201527f4441433a5f63757272656e7443617465676f72794944206e6f7420657175616c60448201526720746f207a65726f60c01b606482015260840161039b565b60685415611d3e57604051636381e58960e11b815260206004820152602360248201527f4441433a5f63757272656e744441434944206e6f7420657175616c20746f207a60448201526265726f60e81b606482015260840161039b565b600160678190556068558015610888576000805461ff001916905550565b6068546040805160a0810182528281526001600160a01b03871660208201529081018590526000906060810182815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525050848152606a602090815260409182902084518155848201516001820180546001600160a01b0319166001600160a01b0390921691909117905591840151600283015560608401516003830155608084015180519495508594929350611e3492600485019291909101906121ba565b50905050600160666000828254611e4b91906128ef565b92505081905550600160686000828254611e6591906128ef565b90915550506000858152606960205260408120600501805460019290611e8c9084906128ef565b90915550506001600160a01b0386166000908152606b60205260409020611eb3908361203d565b508185336001600160a01b03167fbaa9ce3c5df106e294a8517fe62aa9525a79ef0db04efe8d2758f89cd585f6d7898888604051611ef3939291906129cf565b60405180910390a481866001600160a01b031660006001600160a01b03167f0e06b20f2439cf138eb929526b10b2f6be289aa44858d643f4b18a56f270a705604051611ab890602080825260009082015260400190565b60008181526001830160205260408120548015612033576000611f6e600183612877565b8554909150600090611f8290600190612877565b90506000866000018281548110611f9b57611f9b612722565b9060005260206000200154905080876000018481548110611fbe57611fbe612722565b600091825260209091200155611fd58360016128ef565b60008281526001890160205260409020558654879080611ff757611ff76129f4565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610a5f565b6000915050610a5f565b600081815260018301602052604081205461208457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a5f565b506000610a5f565b600054610100900460ff16806120a15750303b155b806120af575060005460ff16155b6120cc57604051636381e58960e11b815260040161039b9061288e565b600054610100900460ff161580156111e3576000805461ffff19166101011790558015610888576000805461ff001916905550565b600054610100900460ff16806121165750303b155b80612124575060005460ff16155b61214157604051636381e58960e11b815260040161039b9061288e565b600054610100900460ff16158015612163576000805461ffff19166101011790555b603380546001600160a01b0319163390811790915560405181906000907f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d0908290a3508015610888576000805461ff001916905550565b8280546121c6906127ae565b90600052602060002090601f0160209004810192826121e8576000855561222e565b82601f1061220157805160ff191683800117855561222e565b8280016001018555821561222e579182015b8281111561222e578251825591602001919060010190612213565b5061223a92915061223e565b5090565b5b8082111561223a576000815560010161223f565b60008083601f84011261226557600080fd5b50813567ffffffffffffffff81111561227d57600080fd5b6020830191508360208260051b850101111561229857600080fd5b9250929050565b600080602083850312156122b257600080fd5b823567ffffffffffffffff8111156122c957600080fd5b6122d585828601612253565b90969095509350505050565b80356001600160a01b03811681146122f857600080fd5b919050565b60006020828403121561230f57600080fd5b612318826122e1565b9392505050565b6000806040838503121561233257600080fd5b61233b836122e1565b946020939093013593505050565b60006020828403121561235b57600080fd5b5035919050565b6000815180845260005b818110156123885760208185018101518683018201520161236c565b8181111561239a576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b03851681528360208201528260408201526080606082015260006123dc6080830184612362565b9695505050505050565b600080604083850312156123f957600080fd5b612402836122e1565b91506020830135801515811461241757600080fd5b809150509250929050565b60008083601f84011261243457600080fd5b50813567ffffffffffffffff81111561244c57600080fd5b60208301915083602082850101111561229857600080fd5b6000806000806040858703121561247a57600080fd5b843567ffffffffffffffff8082111561249257600080fd5b61249e88838901612422565b909650945060208701359150808211156124b757600080fd5b506124c487828801612422565b95989497509550505050565b600080604083850312156124e357600080fd5b6124ec836122e1565b91506124fa602084016122e1565b90509250929050565b6000806000806000806080878903121561251c57600080fd5b612525876122e1565b9550612533602088016122e1565b9450604087013567ffffffffffffffff8082111561255057600080fd5b61255c8a838b01612253565b9096509450606089013591508082111561257557600080fd5b5061258289828a01612422565b979a9699509497509295939492505050565b6000806000806000608086880312156125ac57600080fd5b6125b5866122e1565b94506125c3602087016122e1565b935060408601359250606086013567ffffffffffffffff8111156125e657600080fd5b6125f288828901612422565b969995985093965092949392505050565b8481528360208201528260408201526080606082015260006123dc6080830184612362565b85815260a06020820152600061264160a0830187612362565b6001600160a01b03861660408401526060830185905282810360808401526126698185612362565b98975050505050505050565b60008060008060006080868803121561268d57600080fd5b85359450602086013593506126a4604087016122e1565b9250606086013567ffffffffffffffff8111156125e657600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601390820152724441433a44414349447320697320656d70747960681b604082015260600190565b63b95aa35560e01b600052603260045260246000fd5b63b95aa35560e01b600052601160045260246000fd5b600060001982141561276257612762612738565b5060010190565b60208082526025908201527f4441433a63616e206e6f7420617070726f76616c20746f2063757272656e742060408201526437bbb732b960d91b606082015260800190565b600181811c908216806127c257607f821691505b602082108114156127e35763b95aa35560e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4441433a63616c6c6572206973206e6f742074686520746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526021908201527f4441433a63617465676f727920737461747573206973206e6f74206e6f726d616040820152601b60fa1b606082015260800190565b60008282101561288957612889612738565b500390565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020815260006123186020830184612362565b6000821982111561290257612902612738565b500190565b60408152600061291a6040830185612362565b828103602084015261292c8185612362565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123dc90830184612362565b60006020828403121561297a57600080fd5b81516001600160e01b03198116811461231857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006114f2602083018486612992565b6001600160a01b038416815260406020820181905260009061292c9083018486612992565b63b95aa35560e01b600052603160045260246000fdfea2646970667358221220bc9fcd2fdd860b5d14dc32152b40a91223bbfe9d4fbe54a975a889177bacdc4f64736f6c634300080b0033 \ No newline at end of file diff --git a/compile/ProxyAdmin.abi b/compile/ProxyAdmin.abi new file mode 100644 index 0000000000000000000000000000000000000000..6ee221fc774254006d28b9a90619a5fd2aeedd65 --- /dev/null +++ b/compile/ProxyAdmin.abi @@ -0,0 +1 @@ +[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}] \ No newline at end of file diff --git a/compile/ProxyAdmin.bin b/compile/ProxyAdmin.bin new file mode 100644 index 0000000000000000000000000000000000000000..e37a1251440b2fc2eac9e37ee56286fa887a093f --- /dev/null +++ b/compile/ProxyAdmin.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d0908290a350610895806100616000396000f3fe60806040526004361061007b5760003560e01c8063d366253d1161004e578063d366253d14610118578063d42d0f4f14610138578063d86e29e214610158578063db1fc60c1461016d57600080fd5b806316cad12a146100805780635089e2c8146100a25780635defeee3146100d85780636c57245d146100f8575b600080fd5b34801561008c57600080fd5b506100a061009b3660046105f7565b610180565b005b3480156100ae57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b3480156100e457600080fd5b506100bc6100f33660046105f7565b610275565b34801561010457600080fd5b506100bc6101133660046105f7565b61032d565b34801561012457600080fd5b506100a061013336600461061b565b61036b565b34801561014457600080fd5b506100a061015336600461061b565b6103f6565b34801561016457600080fd5b506100a061044f565b6100a061017b36600461066a565b6104c4565b6000546001600160a01b031633146101b457604051636381e58960e11b81526004016101ab90610740565b60405180910390fd5b6001600160a01b03811661021a57604051636381e58960e11b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101ab565b600080546040516001600160a01b03808516939216917f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60007fd5696bb175b326f8ce5dbe1ba5f41da312aed21a7f90cc42d40b8a20f2004c7181806001600160a01b0385166102b463d5696bb160e01b610556565b6040516102c191906107a5565b600060405180830381855afa9150503d80600081146102fc576040519150601f19603f3d011682016040523d82523d6000602084013e610301565b606091505b50915091508161031057600080fd5b8080602001905181019061032491906107c1565b95945050505050565b60007ff15228001de5006b7e364229f9fb3c2f54a1e8f2aa8887d686ce09f2f04fc23181806001600160a01b0385166102b4621e2a4560eb1b610556565b6000546001600160a01b0316331461039657604051636381e58960e11b81526004016101ab90610740565b604051633a2a322560e21b81526001600160a01b03828116600483015283169063e8a8c894906024015b600060405180830381600087803b1580156103da57600080fd5b505af11580156103ee573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461042157604051636381e58960e11b81526004016101ab90610740565b60405163333b0add60e11b81526001600160a01b03828116600483015283169063667615ba906024016103c0565b6000546001600160a01b0316331461047a57604051636381e58960e11b81526004016101ab90610740565b600080546040516001600160a01b03909116907f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146104ef57604051636381e58960e11b81526004016101ab90610740565b60405163207fa8b960e01b81526001600160a01b0384169063207fa8b990349061051f90869086906004016107de565b6000604051808303818588803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b5050505050505050565b6040805160048082528183019092526060916000919060208201818036833701905050905060005b60048110156105d85783816004811061059957610599610820565b1a60f81b8282815181106105af576105af610820565b60200101906001600160f81b031916908160001a905350806105d081610836565b91505061057e565b5092915050565b6001600160a01b03811681146105f457600080fd5b50565b60006020828403121561060957600080fd5b8135610614816105df565b9392505050565b6000806040838503121561062e57600080fd5b8235610639816105df565b91506020830135610649816105df565b809150509250929050565b63b95aa35560e01b600052604160045260246000fd5b60008060006060848603121561067f57600080fd5b833561068a816105df565b9250602084013561069a816105df565b9150604084013567ffffffffffffffff808211156106b757600080fd5b818601915086601f8301126106cb57600080fd5b8135818111156106dd576106dd610654565b604051601f8201601f19908116603f0116810190838211818310171561070557610705610654565b8160405282815289602084870101111561071e57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60005b83811015610790578181015183820152602001610778565b8381111561079f576000848401525b50505050565b600082516107b7818460208701610775565b9190910192915050565b6000602082840312156107d357600080fd5b8151610614816105df565b60018060a01b0383168152604060208201526000825180604084015261080b816060850160208701610775565b601f01601f1916919091016060019392505050565b63b95aa35560e01b600052603260045260246000fd5b60006000198214156108585763b95aa35560e01b600052601160045260246000fd5b506001019056fea26469706673582212208150299ee9d681a151e754e5c2cb5d848c173386a74593edd16e82b8222bcb0e64736f6c634300080b0033 \ No newline at end of file diff --git a/compile/TransparentUpgradeableProxy.abi b/compile/TransparentUpgradeableProxy.abi new file mode 100644 index 0000000000000000000000000000000000000000..2bdfe2ebea9a9482756a39b370b388ba30bd4ac9 --- /dev/null +++ b/compile/TransparentUpgradeableProxy.abi @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_adm","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}] \ No newline at end of file diff --git a/compile/TransparentUpgradeableProxy.bin b/compile/TransparentUpgradeableProxy.bin new file mode 100644 index 0000000000000000000000000000000000000000..02db7896c44b1489812e5dbb8798eee534681fa0 --- /dev/null +++ b/compile/TransparentUpgradeableProxy.bin @@ -0,0 +1 @@ +608060405260405162000a0838038062000a08833981016040819052620000269162000220565b82816200003382620000c1565b805115620000aa576000826001600160a01b03168260405162000057919062000300565b600060405180830381855af49150503d806000811462000094576040519150601f19603f3d011682016040523d82523d6000602084013e62000099565b606091505b5050905080620000a857600080fd5b505b50620000b890508262000185565b50505062000344565b620000d781620001b460201b620003511760201c565b6200014f57604051636381e58960e11b815260206004820152603660248201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e746160448201527f74696f6e206973206e6f74206120636f6e747261637400000000000000000000606482015260840160405180910390fd5b60006200017e60017fc491a4bc7f22df3d1fef738d9a3c4c3d72de30f6f5b4b051104051df906485f76200031e565b9190915550565b60006200017e60017f1739bb05de6bfb1e46d9ecd038d53871bf808b66c6cb0c157e00eb42c2717ebb6200031e565b3b151590565b80516001600160a01b0381168114620001d257600080fd5b919050565b63b95aa35560e01b600052604160045260246000fd5b60005b838110156200020a578181015183820152602001620001f0565b838111156200021a576000848401525b50505050565b6000806000606084860312156200023657600080fd5b6200024184620001ba565b92506200025160208501620001ba565b60408501519092506001600160401b03808211156200026f57600080fd5b818601915086601f8301126200028457600080fd5b815181811115620002995762000299620001d7565b604051601f8201601f19908116603f01168101908382118183101715620002c457620002c4620001d7565b81604052828152896020848701011115620002de57600080fd5b620002f1836020830160208801620001ed565b80955050505050509250925092565b6000825162000314818460208701620001ed565b9190910192915050565b6000828210156200033f5763b95aa35560e01b600052601160045260246000fd5b500390565b6106b480620003546000396000f3fe60806040526004361061004e5760003560e01c8063207fa8b914610065578063667615ba14610078578063d5696bb114610098578063e8a8c894146100c9578063f1522800146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b61005b6100733660046105a4565b610118565b34801561008457600080fd5b5061005b610093366004610627565b6101bf565b3480156100a457600080fd5b506100ad6102c1565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e4366004610627565b6102fc565b3480156100f557600080fd5b506100ad610326565b610106610357565b6101166101116103f2565b610427565b565b61012061044b565b6001600160a01b0316336001600160a01b031614156101b25761014283610479565b6000836001600160a01b0316838360405161015e929190610649565b600060405180830381855af49150503d8060008114610199576040519150601f19603f3d011682016040523d82523d6000602084013e61019e565b606091505b50509050806101ac57600080fd5b50505050565b6101ba6100fe565b505050565b6101c761044b565b6001600160a01b0316336001600160a01b031614156102b9576001600160a01b03811661026257604051636381e58960e11b815260206004820152603a60248201527f5472616e73706172656e745570677261646561626c6550726f78793a206e657760448201527f2061646d696e20697320746865207a65726f206164647265737300000000000060648201526084015b60405180910390fd5b7f7fff140a2090a44f84000f793b3e2c26fd84de1b51418e5734481ecebf9fa41961028b61044b565b604080516001600160a01b03928316815291841660208301520160405180910390a16102b6816104b9565b50565b6102b66100fe565b60006102cb61044b565b6001600160a01b0316336001600160a01b031614156102f1576102ec6103f2565b905090565b6102f96100fe565b90565b61030461044b565b6001600160a01b0316336001600160a01b031614156102b9576102b681610479565b600061033061044b565b6001600160a01b0316336001600160a01b031614156102f1576102ec61044b565b3b151590565b61035f61044b565b6001600160a01b0316336001600160a01b0316141561011657604051636381e58960e11b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a401610259565b60008061042060017fc491a4bc7f22df3d1fef738d9a3c4c3d72de30f6f5b4b051104051df906485f7610659565b5492915050565b3660008037600080366000845af43d6000803e808015610446573d6000f35b3d6000fd5b60008061042060017f1739bb05de6bfb1e46d9ecd038d53871bf808b66c6cb0c157e00eb42c2717ebb610659565b610482816104ed565b6040516001600160a01b038216907f35c786da035a401a18e1a5dade4bdb4c07d82bdd5c15bef8561dbf76ad4db25d90600090a250565b60006104e660017f1739bb05de6bfb1e46d9ecd038d53871bf808b66c6cb0c157e00eb42c2717ebb610659565b9190915550565b803b61055b57604051636381e58960e11b815260206004820152603660248201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e74616044820152751d1a5bdb881a5cc81b9bdd08184818dbdb9d1c9858dd60521b6064820152608401610259565b60006104e660017fc491a4bc7f22df3d1fef738d9a3c4c3d72de30f6f5b4b051104051df906485f7610659565b80356001600160a01b038116811461059f57600080fd5b919050565b6000806000604084860312156105b957600080fd5b6105c284610588565b9250602084013567ffffffffffffffff808211156105df57600080fd5b818601915086601f8301126105f357600080fd5b81358181111561060257600080fd5b87602082850101111561061457600080fd5b6020830194508093505050509250925092565b60006020828403121561063957600080fd5b61064282610588565b9392505050565b8183823760009101908152919050565b6000828210156106795763b95aa35560e01b600052601160045260246000fd5b50039056fea2646970667358221220884bc9cfaa648afd459182fc757138c9f04d80934633cb9aad43098a7856cbd564736f6c634300080b0033 \ No newline at end of file diff --git "a/doc/BTSI\350\234\200\344\277\241\351\223\276\347\273\237\344\270\200\347\275\221\345\205\263\357\274\210\347\254\254\344\270\211\346\226\271\351\223\276\357\274\211\342\205\242-2.pdf" "b/doc/BTSI\350\234\200\344\277\241\351\223\276\347\273\237\344\270\200\347\275\221\345\205\263\357\274\210\347\254\254\344\270\211\346\226\271\351\223\276\357\274\211\342\205\242-2.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..b6de9ce2c66dd1f3034e7deff9b7af15cc486267 Binary files /dev/null and "b/doc/BTSI\350\234\200\344\277\241\351\223\276\347\273\237\344\270\200\347\275\221\345\205\263\357\274\210\347\254\254\344\270\211\346\226\271\351\223\276\357\274\211\342\205\242-2.pdf" differ diff --git a/java/BTSIDAC.java b/java/BTSIDAC.java new file mode 100644 index 0000000000000000000000000000000000000000..33f7fbf68014cb35054479d1b9f70b0ca4695885 --- /dev/null +++ b/java/BTSIDAC.java @@ -0,0 +1,1055 @@ +package com.btsi.contract; + +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.datatypes.*; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple4; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple5; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; + +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +@SuppressWarnings("unchecked") +public class BTSIDAC extends Contract { + public static final String[] BINARY_ARRAY = {"608060405234801561001057600080fd5b50612a0e806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063c3bc2e891161007c578063c3bc2e89146102e1578063cb1592e5146102f4578063dda33aac14610318578063de8f0c451461032b578063e985e9c51461033e578063f2fde38b1461038a57600080fd5b8063715018a6146102875780638129fc1c1461028f5780638da5cb5b14610297578063a22cb465146102a8578063a382a4d9146102bb578063b224b4e9146102ce57600080fd5b80632be92b25116101155780632be92b25146101e557806336b4e1cc14610208578063393e05211461021b57806342966c681461023e578063522dee7b1461025157806370a082311461027457600080fd5b8063081812fc14610152578063095ea7b3146101985780631108da2c146101ad57806318160ddd146101c05780631af716ba146101d2575b600080fd5b61017b610160366004612221565b6000908152606c60205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b6101ab6101a6366004612256565b61039d565b005b6101ab6101bb36600461230e565b610500565b6066545b60405190815260200161018f565b6101ab6101e036600461239f565b610626565b6101f86101f3366004612221565b6106b0565b60405161018f949392919061245b565b6101ab610216366004612492565b610776565b61022e610229366004612256565b610800565b60405161018f94939291906124d4565b6101ab61024c366004612221565b61098c565b6101c461025f366004612221565b60009081526069602052604090206005015490565b6101c46102823660046124f9565b610a65565b6101ab610a85565b6101ab610af9565b6033546001600160a01b031661017b565b6101ab6102b636600461251b565b610b7e565b6101ab6102c9366004612557565b610c13565b6101ab6102dc3660046125a2565b610dde565b6101ab6102ef366004612221565b610f00565b610307610302366004612221565b610fe3565b60405161018f95949392919061260e565b6101ab610326366004612221565b611153565b6101ab610339366004612492565b611234565b61037a61034c36600461265b565b6001600160a01b039182166000908152606d6020908152604080832093909416825291909152205460ff1690565b604051901515815260200161018f565b6101ab6103983660046124f9565b6112b9565b6000818152606a60205260409020600101546001600160a01b0316331461040b5760405162461bcd60e51b815260206004820152601b60248201527f4441433a6f6e6c7920444143206f776e65722063616e2063616c6c000000000060448201526064015b60405180910390fd5b6000818152606a60205260409020600101546001600160a01b03838116911614156104485760405162461bcd60e51b81526004016104029061268e565b6000818152606a6020526040902060030154156104a75760405162461bcd60e51b815260206004820152601f60248201527f4441433a6f6e6c79206e6f726d616c204441432063616e20617070726f7665006044820152606401610402565b6000818152606c602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839233917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a45050565b8261051d5760405162461bcd60e51b8152600401610402906126d3565b61057286868686600081811061053557610535612700565b6020029190910135905060005b6040519080825280601f01601f19166020018201604052801561056c576020820181803683370190505b506113a4565b6105db5760405162461bcd60e51b815260206004820152603460248201527f4441433a63616e74206e6f74207472616e7366657220746f206e6f6e204441436044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610402565b60005b8381101561061d5761060b87878787858181106105fd576105fd612700565b905060200201358686611454565b806106158161272c565b9150506105de565b50505050505050565b6106338585856000610542565b61069c5760405162461bcd60e51b815260206004820152603460248201527f4441433a2063616e206e6f74207472616e7366657220746f206e6f6e204441436044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610402565b6106a98585858585611454565b5050505050565b6000818152606a60205260409020600181015460028201546003830154600490930180546001600160a01b03909316939192606091906106ef90612747565b80601f016020809104026020016040519081016040528092919081815260200182805461071b90612747565b80156107685780601f1061073d57610100808354040283529160200191610768565b820191906000526020600020905b81548152906001019060200180831161074b57829003601f168201915b505050505090509193509193565b6033546001600160a01b031633146107a05760405162461bcd60e51b815260040161040290612782565b806107bd5760405162461bcd60e51b8152600401610402906126d3565b60005b818110156107fb576107e98383838181106107dd576107dd612700565b90506020020135611659565b806107f38161272c565b9150506107c0565b505050565b60008060006060600085116108575760405162461bcd60e51b815260206004820152601d60248201527f4441433a696e646578206d7573742067726561746572207468616e20300000006044820152606401610402565b6108836108656001876127b7565b6001600160a01b0388166000908152606b60205260409020906116bd565b9350600084116108d55760405162461bcd60e51b815260206004820152601860248201527f4441433a6e6f20444143206174207468697320696e64657800000000000000006044820152606401610402565b6000848152606a60205260409020600281015460038201546004909201805491955091935061090390612747565b80601f016020809104026020016040519081016040528092919081815260200182805461092f90612747565b801561097c5780601f106109515761010080835404028352916020019161097c565b820191906000526020600020905b81548152906001019060200180831161095f57829003601f168201915b5050505050905092959194509250565b61099581611743565b61099f3382611794565b6109bb5760405162461bcd60e51b8152600401610402906127ce565b6000818152606a602052604090206003015415610a1a5760405162461bcd60e51b815260206004820152601c60248201527f4441433a6f6e6c79206e6f726d616c204441432063616e206275726e000000006044820152606401610402565b6000818152606a60209081526040808320600201548352606990915290206003015415610a595760405162461bcd60e51b81526004016104029061281b565b610a628161180e565b50565b6001600160a01b0381166000908152606b60205260408120545b92915050565b6033546001600160a01b03163314610aaf5760405162461bcd60e51b815260040161040290612782565b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b600054610100900460ff1680610b0e5750303b155b80610b1c575060005460ff16155b610b385760405162461bcd60e51b81526004016104029061285c565b600054610100900460ff16158015610b5a576000805461ffff19166101011790555b610b6261192a565b610b6a61199b565b8015610a62576000805461ff001916905550565b336001600160a01b0383161415610ba75760405162461bcd60e51b81526004016104029061268e565b336000818152606d602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610c1c85611ad7565b6000858152606960205260409020600201546001600160a01b03163314610c855760405162461bcd60e51b815260206004820181905260248201527f4441433a6f6e6c792063617465676f7279206f776e65722063616e206d696e746044820152606401610402565b60008581526069602052604090206003015415610cf85760405162461bcd60e51b815260206004820152602b60248201527f4441433a6f6e6c792063617465676f727920737461747573206973206e6f726d60448201526a185b0818d85b881b5a5b9d60aa1b6064820152608401610402565b60008411610d575760405162461bcd60e51b815260206004820152602660248201527f4441433a6d696e7420616d6f756e74206d7573742067726561746572207468616044820152656e207a65726f60d01b6064820152608401610402565b6001600160a01b038316610dad5760405162461bcd60e51b815260206004820181905260248201527f4441433a63616e206e6f74206d696e7420746f207a65726f20616464726573736044820152606401610402565b60005b84811015610dd657610dc484878585611b32565b80610dce8161272c565b915050610db0565b505050505050565b610e306040518060200160405280600081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611d209050565b15610e875760405162461bcd60e51b815260206004820152602160248201527f4441433a63617465676f72794e616d652063616e206e6f7420626520656d70746044820152607960f81b6064820152608401610402565b610efa84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f88018190048102820181019092528681529250869150859081908401838280828437600092019190915250611d8392505050565b50505050565b6033546001600160a01b03163314610f2a5760405162461bcd60e51b815260040161040290612782565b610f3381611ad7565b600160008281526069602052604090206003015414610fa25760405162461bcd60e51b815260206004820152602560248201527f4441433a6f6e6c7920667265657a652063617465676f72792063616e20756e666044820152647265657a6560d81b6064820152608401610402565b60008181526069602052604080822060030182905551829133917feb6b2da67215e2caf27a509101b43cb08be5a3b43751050470bb9afc84d70bee9190","a350565b600081815260696020526040812080546001909101805491926060929091829184919061100f90612747565b80601f016020809104026020016040519081016040528092919081815260200182805461103b90612747565b80156110885780601f1061105d57610100808354040283529160200191611088565b820191906000526020600020905b81548152906001019060200180831161106b57829003601f168201915b505050600089815260696020526040902060028101546003820154600490920180549599506001600160a01b039091169750909550926110ca92509050612747565b80601f01602080910402602001604051908101604052809291908181526020018280546110f690612747565b80156111435780601f1061111857610100808354040283529160200191611143565b820191906000526020600020905b81548152906001019060200180831161112657829003601f168201915b5050505050905091939590929450565b6033546001600160a01b0316331461117d5760405162461bcd60e51b815260040161040290612782565b61118681611ad7565b600081815260696020526040902060030154156111f15760405162461bcd60e51b815260206004820152602360248201527f4441433a6f6e6c79206e6f726d616c2063617465676f72792063616e20667265604482015262657a6560e81b6064820152608401610402565b600081815260696020526040808220600160039091015551829133917fa1915ae18772574067eca1dad2f4a140f527099158837098cd7f215540f9210c9190a350565b6033546001600160a01b0316331461125e5760405162461bcd60e51b815260040161040290612782565b8061127b5760405162461bcd60e51b8152600401610402906126d3565b60005b818110156107fb576112a783838381811061129b5761129b612700565b90506020020135611eb8565b806112b18161272c565b91505061127e565b6033546001600160a01b031633146112e35760405162461bcd60e51b815260040161040290612782565b6001600160a01b0381166113485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610402565b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b0384163b6113bd5750600161144c565b60405163345eac7560e11b81526000906001600160a01b038616906368bd58ea906113f29089908990899089906004016128aa565b6020604051808303816000875af1158015611411573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143591906128dd565b6001600160e01b03191663345eac7560e11b149150505b949350505050565b61145e3384611794565b61147a5760405162461bcd60e51b8152600401610402906127ce565b6001600160a01b0384166114e15760405162461bcd60e51b815260206004820152602860248201527f4441433a63616e206e6f74207472616e7366657220746f20746865207a65726f604482015267206164647265737360c01b6064820152608401610402565b6000838152606a602052604081206002015490600082815260696020526040902060030154146115235760405162461bcd60e51b81526004016104029061281b565b6000848152606a6020526040902060030154156115825760405162461bcd60e51b815260206004820152601c60248201527f4441433a44414320737461747573206973206e6f74206e6f726d616c000000006044820152606401610402565b6000848152606c6020908152604080832080546001600160a01b03191690556001600160a01b0389168352606b90915290206115be9085611f1a565b506001600160a01b0385166000908152606b602052604090206115e1908561200d565b506000848152606a60205260409081902060010180546001600160a01b0319166001600160a01b0388811691821790925591518692918916907fcd6e659e4c2e75c3bfe47fecaccf39aeb368116a0ee52afb532e07f6cba6c0d1906116499088908890612930565b60405180910390a4505050505050565b61166281611743565b60016000828152606a60205260409020600301541415610a62576000818152606a602052604080822060030182905551829133917f4f62fd67e16073ab460b98757109cbc324979c3a733d58599c06d0dea0bf72959190a350565b8154600090821061171b5760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610402565b82600001828154811061173057611730612700565b9060005260206000200154905092915050565b6000818152606a6020526040902054610a625760405162461bcd60e51b8152602060048201526013602482015272111050ce911050d251081b9bdd08195e1a5cdd606a1b6044820152606401610402565b6000818152606a60205260408120600101546001600160a01b039081169084168114806117e657506001600160a01b038082166000908152606d602090815260408083209388168352929052205460ff165b8061144c575050506000908152606c60205260409020546001600160a01b0390811691161490565b6000818152606a6020908152604080832060010154606c835281842080546001600160a01b03191690556001600160a01b0316808452606b90925282209091906118589084611f1a565b506001600160a01b0381166000908152606b6020526040902061187b908461200d565b506000838152606a602090815260408083206001810180546001600160a01b0319166001600160a01b03878116918217909255600260039093019290925582518481529384019490945286939092908616917fcd6e659e4c2e75c3bfe47fecaccf39aeb368116a0ee52afb532e07f6cba6c0d1910160405180910390a4604051839033907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca590600090a3505050565b600054610100900460ff168061193f5750303b155b8061194d575060005460ff16155b6119695760405162461bcd60e51b81526004016104029061285c565b600054610100900460ff1615801561198b576000805461ffff19166101011790555b61199361205c565b610b6a6120d0565b600054610100900460ff16806119b05750303b155b806119be575060005460ff16155b6119da5760405162461bcd60e51b81526004016104029061285c565b600054610100900460ff161580156119fc576000805461ffff19166101011790555b60675415611a5d5760405162461bcd60e51b815260206004820152602860248201527f4441433a5f63757272656e7443617465676f72794944206e6f7420657175616c60448201526720746f207a65726f60c01b6064820152608401610402565b60685415611ab95760405162461bcd60e51b815260206004820152602360248201527f4441433a5f63757272656e744441434944206e6f7420657175616c20746f207a60448201526265726f60e81b6064820152608401610402565b600160678190556068558015610a62576000805461ff001916905550565b600081815260696020526040902054610a625760405162461bcd60e51b815260206004820152601b60248201527f4441433a63617465676f727920646f6573206e6f7420657869737400000000006044820152606401610402565b6068546040805160a0810182528281526001600160a01b03871660208201529081018590526000906060810182815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525050848152606a602090815260409182902084518155848201516001820180546001600160a01b0319166001600160a01b0390921691909117905591840151600283015560608401516003830155608084015180519495508594929350611c0a9260048501929190910190612188565b50905050600160666000828254611c219190612944565b92505081905550600160686000828254611c3b9190612944565b90915550506000858152606960205260408120600501805460019290611c62908490612944565b90915550506001600160a01b0386166000908152606b60205260409020611c89908361200d565b508185336001600160a01b03167fad2943b15836caf43698401a62af4738985fb33dd979844d99d37f5293f037d3898888604051611cc99392919061295c565b60405180910390a481866001600160a01b031660006001600160a01b03167fcd6e659e4c2e75c3bfe47fecaccf39aeb368116a0ee52afb532e07f6cba6c0d160405161164990602080825260009082015260400190565b60008083604051602001611d34919061298a565b604051602081830303815290604052805190602001209050600083604051602001611d5f919061298a565b60408051601f19818403018152919052805160209091012091909114949350505050565b6067546040805160c081018252828152602080820186815233838501526000606084018190526080840187905260a0840181905285815260698352939093208251815592518051929384939092611de1926001850192910190612188565b5060408201516002820180546001600160a01b0319166001600160a01b039092169190911790556060820151600382015560808201518051611e2d916004840191602090910190612188565b5060a08201518160050155905050600160656000828254611e4e9190612944565b92505081905550600160676000828254611e689190612944565b90915550829050336001600160a01b03167fbbd0f597c37492a2f99254aa1196162b48f8d540b71a34ec8e8bac6cf947c01d8686604051611eaa92919061299d565b60405180910390a350505050565b611ec181611743565b6000818152606a6020526040902060030154610a62576000818152606a6020526040808220600160039091015551829133917f48ed2ee6a85ff2f69d20b4f95843ad08ebc40e6d1ad525065ec7e8390fb495c49190a350565b60008181526001830160205260408120548015612003576000611f3e6001836127b7565b8554909150600090611f52906001906127b7565b90506000866000018281548110611f6b57611f6b612700565b9060005260206000200154905080876000018481548110611f8e57611f8e612700565b600091825260209091200155611fa5836001612944565b60008281526001890160205260409020558654879080611fc757611fc76129c2565b600190038181906000526020600020016000905590558660","01016000878152602001908152602001600020600090556001945050505050610a7f565b6000915050610a7f565b600081815260018301602052604081205461205457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a7f565b506000610a7f565b600054610100900460ff16806120715750303b155b8061207f575060005460ff16155b61209b5760405162461bcd60e51b81526004016104029061285c565b600054610100900460ff16158015610b6a576000805461ffff19166101011790558015610a62576000805461ff001916905550565b600054610100900460ff16806120e55750303b155b806120f3575060005460ff16155b61210f5760405162461bcd60e51b81526004016104029061285c565b600054610100900460ff16158015612131576000805461ffff19166101011790555b603380546001600160a01b0319163390811790915560405181906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610a62576000805461ff001916905550565b82805461219490612747565b90600052602060002090601f0160209004810192826121b657600085556121fc565b82601f106121cf57805160ff19168380011785556121fc565b828001600101855582156121fc579182015b828111156121fc5782518255916020019190600101906121e1565b5061220892915061220c565b5090565b5b80821115612208576000815560010161220d565b60006020828403121561223357600080fd5b5035919050565b80356001600160a01b038116811461225157600080fd5b919050565b6000806040838503121561226957600080fd5b6122728361223a565b946020939093013593505050565b60008083601f84011261229257600080fd5b50813567ffffffffffffffff8111156122aa57600080fd5b6020830191508360208260051b85010111156122c557600080fd5b9250929050565b60008083601f8401126122de57600080fd5b50813567ffffffffffffffff8111156122f657600080fd5b6020830191508360208285010111156122c557600080fd5b6000806000806000806080878903121561232757600080fd5b6123308761223a565b955061233e6020880161223a565b9450604087013567ffffffffffffffff8082111561235b57600080fd5b6123678a838b01612280565b9096509450606089013591508082111561238057600080fd5b5061238d89828a016122cc565b979a9699509497509295939492505050565b6000806000806000608086880312156123b757600080fd5b6123c08661223a565b94506123ce6020870161223a565b935060408601359250606086013567ffffffffffffffff8111156123f157600080fd5b6123fd888289016122cc565b969995985093965092949392505050565b6000815180845260005b8181101561243457602081850181015186830182015201612418565b81811115612446576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b0385168152836020820152826040820152608060608201526000612488608083018461240e565b9695505050505050565b600080602083850312156124a557600080fd5b823567ffffffffffffffff8111156124bc57600080fd5b6124c885828601612280565b90969095509350505050565b848152836020820152826040820152608060608201526000612488608083018461240e565b60006020828403121561250b57600080fd5b6125148261223a565b9392505050565b6000806040838503121561252e57600080fd5b6125378361223a565b91506020830135801515811461254c57600080fd5b809150509250929050565b60008060008060006080868803121561256f57600080fd5b85359450602086013593506125866040870161223a565b9250606086013567ffffffffffffffff8111156123f157600080fd5b600080600080604085870312156125b857600080fd5b843567ffffffffffffffff808211156125d057600080fd5b6125dc888389016122cc565b909650945060208701359150808211156125f557600080fd5b50612602878288016122cc565b95989497509550505050565b85815260a06020820152600061262760a083018761240e565b6001600160a01b038616604084015260608301859052828103608084015261264f818561240e565b98975050505050505050565b6000806040838503121561266e57600080fd5b6126778361223a565b91506126856020840161223a565b90509250929050565b60208082526025908201527f4441433a63616e206e6f7420617070726f76616c20746f2063757272656e742060408201526437bbb732b960d91b606082015260800190565b6020808252601390820152724441433a44414349447320697320656d70747960681b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561274057612740612716565b5060010190565b600181811c9082168061275b57607f821691505b6020821081141561277c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000828210156127c9576127c9612716565b500390565b6020808252602d908201527f4441433a63616c6c6572206973206e6f742074686520746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526021908201527f4441433a63617465676f727920737461747573206973206e6f74206e6f726d616040820152601b60fa1b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906124889083018461240e565b6000602082840312156128ef57600080fd5b81516001600160e01b03198116811461251457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600061144c602083018486612907565b6000821982111561295757612957612716565b500190565b6001600160a01b03841681526040602082018190526000906129819083018486612907565b95945050505050565b602081526000612514602083018461240e565b6040815260006129b0604083018561240e565b8281036020840152612981818561240e565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220cec978d6621a16320692901595424021f1b9a3e4e435ae801ca8c9b92b3a5bd864736f6c634300080b0033"}; + + public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY); + + public static final String[] SM_BINARY_ARRAY = {"608060405234801561001057600080fd5b50612a40806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635089e2c8116100c3578063ca97c9b61161007c578063ca97c9b6146102f3578063cc8be70e14610316578063d86e29e214610329578063deca7fb714610331578063ea605f3d14610355578063ffd89b6f1461035d57600080fd5b80635089e2c814610259578063918268151461027e57806392ec0cdd146102915780639b08e7f8146102a45780639cb97a52146102b7578063b61b2b39146102e057600080fd5b80632ffdc5f8116101155780632ffdc5f8146101c7578063391edc16146101da5780633b3987fe146101ed5780633e5a304c14610200578063441f819c146102235780634c00105f1461023657600080fd5b80630256e2781461015257806304ddbcf21461016957806316cad12a1461017e5780631f2d486014610191578063286806cc146101a4575b600080fd5b6066545b6040519081526020015b60405180910390f35b61017c61017736600461229f565b610370565b005b61017c61018c3660046122fd565b610405565b61017c61019f36600461231f565b6104f2565b6101b76101b2366004612349565b610653565b60405161016094939291906123af565b61017c6101d53660046123e6565b610719565b61017c6101e8366004612349565b6107af565b61017c6101fb36600461229f565b61088b565b61015661020e366004612349565b60009081526069602052604090206005015490565b61017c610231366004612464565b610912565b6102496102443660046124d0565b610a35565b6040519015158152602001610160565b6033546001600160a01b03165b6040516001600160a01b039091168152602001610160565b61017c61028c366004612503565b610a65565b61017c61029f366004612349565b610b8d565b61017c6102b2366004612594565b610c72565b6102666102c5366004612349565b6000908152606c60205260409020546001600160a01b031690565b61017c6102ee366004612349565b610cfd565b61030661030136600461231f565b610de0565b6040516101609493929190612603565b6101566103243660046122fd565b610f6e565b61017c610f8c565b61034461033f366004612349565b611001565b604051610160959493929190612628565b61017c611171565b61017c61036b366004612675565b6111f7565b6033546001600160a01b031633146103a457604051636381e58960e11b815260040161039b906126c0565b60405180910390fd5b806103c257604051636381e58960e11b815260040161039b906126f5565b60005b81811015610400576103ee8383838181106103e2576103e2612722565b905060200201356113c6565b806103f88161274e565b9150506103c5565b505050565b6033546001600160a01b0316331461043057604051636381e58960e11b815260040161039b906126c0565b6001600160a01b03811661049657604051636381e58960e11b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161039b565b6033546040516001600160a01b038084169216907f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152606a60205260409020600101546001600160a01b0316331461055c57604051636381e58960e11b815260206004820152601b60248201527f4441433a6f6e6c7920444143206f776e65722063616e2063616c6c0000000000604482015260640161039b565b6000818152606a60205260409020600101546001600160a01b038381169116141561059a57604051636381e58960e11b815260040161039b90612769565b6000818152606a6020526040902060030154156105fa57604051636381e58960e11b815260206004820152601f60248201527f4441433a6f6e6c79206e6f726d616c204441432063616e20617070726f766500604482015260640161039b565b6000818152606c602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839233917fd1e45707b3f71c77903b61f04c900f772db264b9bf618f1cc3308fb516eb61699190a45050565b6000818152606a60205260409020600181015460028201546003830154600490930180546001600160a01b0390931693919260609190610692906127ae565b80601f01602080910402602001604051908101604052809291908181526020018280546106be906127ae565b801561070b5780601f106106e05761010080835404028352916020019161070b565b820191906000526020600020905b8154815290600101906020018083116106ee57829003601f168201915b505050505090509193509193565b336001600160a01b038316141561074357604051636381e58960e11b815260040161039b90612769565b336000818152606d602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f34cc9ec6b85c217ac6bd5f7b86411e4e4e40d816d5d17725c4dec1f0901d9074910160405180910390a35050565b6107b88161142a565b6107c2338261147c565b6107df57604051636381e58960e11b815260040161039b906127e9565b6000818152606a60205260409020600301541561083f57604051636381e58960e11b815260206004820152601c60248201527f4441433a6f6e6c79206e6f726d616c204441432063616e206275726e00000000604482015260640161039b565b6000818152606a6020908152604080832060020154835260699091529020600301541561087f57604051636381e58960e11b815260040161039b90612836565b610888816114fa565b50565b6033546001600160a01b031633146108b657604051636381e58960e11b815260040161039b906126c0565b806108d457604051636381e58960e11b815260040161039b906126f5565b60005b81811015610400576109008383838181106108f4576108f4612722565b90506020020135611616565b8061090a8161274e565b9150506108d7565b6109646040518060200160405280600081525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506116789050565b156109bc57604051636381e58960e11b815260206004820152602160248201527f4441433a63617465676f72794e616d652063616e206e6f7420626520656d70746044820152607960f81b606482015260840161039b565b610a2f84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f880181900481028201810190925286815292508691508590819084018382808284376000920191909152506116db92505050565b50505050565b6001600160a01b038083166000908152606d602090815260408083209385168352929052205460ff165b92915050565b82610a8357604051636381e58960e11b815260040161039b906126f5565b610ad8868686866000818110610a9b57610a9b612722565b6020029190910135905060005b6040519080825280601f01601f191660200182016040528015610ad2576020820181803683370190505b50611810565b610b4257604051636381e58960e11b815260206004820152603460248201527f4441433a63616e74206e6f74207472616e7366657220746f206e6f6e204441436044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161039b565b60005b83811015610b8457610b728787878785818110610b6457610b64612722565b9050602002013586866118bf565b80610b7c8161274e565b915050610b45565b50505050505050565b6033546001600160a01b03163314610bb857604051636381e58960e11b815260040161039b906126c0565b610bc181611ac8565b600160008281526069602052604090206003015414610c3157604051636381e58960e11b815260206004820152602560248201527f4441433a6f6e6c7920667265657a652063617465676f72792063616e20756e666044820152647265657a6560d81b606482015260840161039b565b60008181526069602052604080822060030182905551829133917f8171c3e7cd97b6ad5e189e7564be1f3291b03d6802b0eac2293636e8277f0e319190a350565b610c7f8585856000610aa8565b610ce957604051636381e58960e11b815260206004820152603460248201527f4441433a2063616e206e6f74207472616e7366657220746f206e6f6e204441436044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161039b565b610cf685858585856118bf565b5050505050565b6033546001600160a01b03163314610d2857604051636381e58960e11b815260040161039b906126c0565b610d3181611ac8565b60008181526069602052604090206003015415610d9d57604051636381e58960e11b815260206004820152602360248201527f4441433a6f6e6c79206e6f726d616c2063617465676f72792063616e20667265604482015262657a6560e81b606482015260840161039b565b600081815260696020526040808220600160039091015551829133917f6790b7a7222403863d6359169e1769717ae3d64801f03a6b9433bcea146d1c839190a350565b6000806000606060008511610e3857604051636381e58960e11b815260206004820152601d60248201527f4441433a696e646578206d7573742067726561746572207468616e2030000000604482015260640161039b565b610e64610e46600187612877565b6001600160a01b0388166000908152606b6020526040902090611b24565b935060008411610eb757604051636381e58960e11b815260206004820152601860248201527f4441433a6e6f20444143206174207468697320696e6465780000000000000000604482015260640161039b565b6000848152606a602052604090206002810154600382015460049092018054919550919350610ee5906127ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610f11906127ae565b8015610f5e5780601f10610f3357610100808354040283529160200191610f5e565b820191906000526020600020905b815481529060010190602001808311610f4157829003601f168201915b5050505050905092959194509250565b6001600160a01b0381166000908152606b6020526040812054610a5f565b6033546001600160a01b03163314610fb757604051636381e58960e11b815260040161039b906126c0565b6033546040516000916001600160a01b0316907f5c7c30d4a0f08950cb23be4132957b357fa5dfdb","0fcf218f81b86a1c036e47d0908390a3603380546001600160a01b0319169055565b600081815260696020526040812080546001909101805491926060929091829184919061102d906127ae565b80601f0160208091040260200160405190810160405280929190818152602001828054611059906127ae565b80156110a65780601f1061107b576101008083540402835291602001916110a6565b820191906000526020600020905b81548152906001019060200180831161108957829003601f168201915b505050600089815260696020526040902060028101546003820154600490920180549599506001600160a01b039091169750909550926110e8925090506127ae565b80601f0160208091040260200160405190810160405280929190818152602001828054611114906127ae565b80156111615780601f1061113657610100808354040283529160200191611161565b820191906000526020600020905b81548152906001019060200180831161114457829003601f168201915b5050505050905091939590929450565b600054610100900460ff16806111865750303b155b80611194575060005460ff16155b6111b157604051636381e58960e11b815260040161039b9061288e565b600054610100900460ff161580156111d3576000805461ffff19166101011790555b6111db611bab565b6111e3611c1d565b8015610888576000805461ff001916905550565b61120085611ac8565b6000858152606960205260409020600201546001600160a01b0316331461126a57604051636381e58960e11b815260206004820181905260248201527f4441433a6f6e6c792063617465676f7279206f776e65722063616e206d696e74604482015260640161039b565b600085815260696020526040902060030154156112de57604051636381e58960e11b815260206004820152602b60248201527f4441433a6f6e6c792063617465676f727920737461747573206973206e6f726d60448201526a185b0818d85b881b5a5b9d60aa1b606482015260840161039b565b6000841161133e57604051636381e58960e11b815260206004820152602660248201527f4441433a6d696e7420616d6f756e74206d7573742067726561746572207468616044820152656e207a65726f60d01b606482015260840161039b565b6001600160a01b03831661139557604051636381e58960e11b815260206004820181905260248201527f4441433a63616e206e6f74206d696e7420746f207a65726f2061646472657373604482015260640161039b565b60005b848110156113be576113ac84878585611d5c565b806113b68161274e565b915050611398565b505050505050565b6113cf8161142a565b60016000828152606a60205260409020600301541415610888576000818152606a602052604080822060030182905551829133917f7fc84bbf5f6aa9afb4daed41edce6598ddc95f8dd2c17399ab3bf775c637d89d9190a350565b6000818152606a602052604090205461088857604051636381e58960e11b8152602060048201526013602482015272111050ce911050d251081b9bdd08195e1a5cdd606a1b604482015260640161039b565b6000818152606a60205260408120600101546001600160a01b039081169084168114806114ce57506001600160a01b038082166000908152606d602090815260408083209388168352929052205460ff165b806114f257506000838152606c60205260409020546001600160a01b038581169116145b949350505050565b6000818152606a6020908152604080832060010154606c835281842080546001600160a01b03191690556001600160a01b0316808452606b90925282209091906115449084611f4a565b506001600160a01b0381166000908152606b60205260409020611567908461203d565b506000838152606a602090815260408083206001810180546001600160a01b0319166001600160a01b03878116918217909255600260039093019290925582518481529384019490945286939092908616917f0e06b20f2439cf138eb929526b10b2f6be289aa44858d643f4b18a56f270a705910160405180910390a4604051839033907fc5cfb20a182ba4b800686ac3d941ef8a395ec1bbf151ed8db9b9daec7a67f9e790600090a3505050565b61161f8161142a565b6000818152606a6020526040902060030154610888576000818152606a6020526040808220600160039091015551829133917f97b179d991379a1ceca6ea8271f229aaa1ee8dd74df21f9236c5379df138f42e9190a350565b6000808360405160200161168c91906128dc565b6040516020818303038152906040528051906020012090506000836040516020016116b791906128dc565b60408051601f19818403018152919052805160209091012091909114949350505050565b6067546040805160c081018252828152602080820186815233838501526000606084018190526080840187905260a08401819052858152606983529390932082518155925180519293849390926117399260018501929101906121ba565b5060408201516002820180546001600160a01b0319166001600160a01b0390921691909117905560608201516003820155608082015180516117859160048401916020909101906121ba565b5060a082015181600501559050506001606560008282546117a691906128ef565b925050819055506001606760008282546117c091906128ef565b90915550829050336001600160a01b03167f9fcb3fde540f1319bf07575fe9913e34b82a0ed274f00ffa218e9bb779b68ed28686604051611802929190612907565b60405180910390a350505050565b60006001600160a01b0384163b611829575060016114f2565b604051637e8c1fc960e11b81526000906001600160a01b0386169063fd183f929061185e908990899089908990600401612935565b6020604051808303816000875af115801561187d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a19190612968565b6001600160e01b031916637e8c1fc960e11b14915050949350505050565b6118c9338461147c565b6118e657604051636381e58960e11b815260040161039b906127e9565b6001600160a01b03841661194e57604051636381e58960e11b815260206004820152602860248201527f4441433a63616e206e6f74207472616e7366657220746f20746865207a65726f604482015267206164647265737360c01b606482015260840161039b565b6000838152606a6020526040812060020154906000828152606960205260409020600301541461199157604051636381e58960e11b815260040161039b90612836565b6000848152606a6020526040902060030154156119f157604051636381e58960e11b815260206004820152601c60248201527f4441433a44414320737461747573206973206e6f74206e6f726d616c00000000604482015260640161039b565b6000848152606c6020908152604080832080546001600160a01b03191690556001600160a01b0389168352606b9091529020611a2d9085611f4a565b506001600160a01b0385166000908152606b60205260409020611a50908561203d565b506000848152606a60205260409081902060010180546001600160a01b0319166001600160a01b0388811691821790925591518692918916907f0e06b20f2439cf138eb929526b10b2f6be289aa44858d643f4b18a56f270a70590611ab890889088906129bb565b60405180910390a4505050505050565b60008181526069602052604090205461088857604051636381e58960e11b815260206004820152601b60248201527f4441433a63617465676f727920646f6573206e6f742065786973740000000000604482015260640161039b565b81546000908210611b8357604051636381e58960e11b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b606482015260840161039b565b826000018281548110611b9857611b98612722565b9060005260206000200154905092915050565b600054610100900460ff1680611bc05750303b155b80611bce575060005460ff16155b611beb57604051636381e58960e11b815260040161039b9061288e565b600054610100900460ff16158015611c0d576000805461ffff19166101011790555b611c1561208c565b6111e3612101565b600054610100900460ff1680611c325750303b155b80611c40575060005460ff16155b611c5d57604051636381e58960e11b815260040161039b9061288e565b600054610100900460ff16158015611c7f576000805461ffff19166101011790555b60675415611ce157604051636381e58960e11b815260206004820152602860248201527f4441433a5f63757272656e7443617465676f72794944206e6f7420657175616c60448201526720746f207a65726f60c01b606482015260840161039b565b60685415611d3e57604051636381e58960e11b815260206004820152602360248201527f4441433a5f63757272656e744441434944206e6f7420657175616c20746f207a60448201526265726f60e81b606482015260840161039b565b600160678190556068558015610888576000805461ff001916905550565b6068546040805160a0810182528281526001600160a01b03871660208201529081018590526000906060810182815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525050848152606a602090815260409182902084518155848201516001820180546001600160a01b0319166001600160a01b0390921691909117905591840151600283015560608401516003830155608084015180519495508594929350611e3492600485019291909101906121ba565b50905050600160666000828254611e4b91906128ef565b92505081905550600160686000828254611e6591906128ef565b90915550506000858152606960205260408120600501805460019290611e8c9084906128ef565b90915550506001600160a01b0386166000908152606b60205260409020611eb3908361203d565b508185336001600160a01b03167fbaa9ce3c5df106e294a8517fe62aa9525a79ef0db04efe8d2758f89cd585f6d7898888604051611ef3939291906129cf565b60405180910390a481866001600160a01b031660006001600160a01b03167f0e06b20f2439cf138eb929526b10b2f6be289aa44858d643f4b18a56f270a705604051611ab890602080825260009082015260400190565b60008181526001830160205260408120548015612033576000611f6e600183612877565b8554909150600090611f8290600190612877565b90506000866000018281548110611f9b57611f9b612722565b9060005260206000200154905080876000018481548110611fbe57611fbe612722565b600091825260209091200155611fd58360016128ef565b60008281526001890160","205260409020558654879080611ff757611ff76129f4565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610a5f565b6000915050610a5f565b600081815260018301602052604081205461208457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a5f565b506000610a5f565b600054610100900460ff16806120a15750303b155b806120af575060005460ff16155b6120cc57604051636381e58960e11b815260040161039b9061288e565b600054610100900460ff161580156111e3576000805461ffff19166101011790558015610888576000805461ff001916905550565b600054610100900460ff16806121165750303b155b80612124575060005460ff16155b61214157604051636381e58960e11b815260040161039b9061288e565b600054610100900460ff16158015612163576000805461ffff19166101011790555b603380546001600160a01b0319163390811790915560405181906000907f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d0908290a3508015610888576000805461ff001916905550565b8280546121c6906127ae565b90600052602060002090601f0160209004810192826121e8576000855561222e565b82601f1061220157805160ff191683800117855561222e565b8280016001018555821561222e579182015b8281111561222e578251825591602001919060010190612213565b5061223a92915061223e565b5090565b5b8082111561223a576000815560010161223f565b60008083601f84011261226557600080fd5b50813567ffffffffffffffff81111561227d57600080fd5b6020830191508360208260051b850101111561229857600080fd5b9250929050565b600080602083850312156122b257600080fd5b823567ffffffffffffffff8111156122c957600080fd5b6122d585828601612253565b90969095509350505050565b80356001600160a01b03811681146122f857600080fd5b919050565b60006020828403121561230f57600080fd5b612318826122e1565b9392505050565b6000806040838503121561233257600080fd5b61233b836122e1565b946020939093013593505050565b60006020828403121561235b57600080fd5b5035919050565b6000815180845260005b818110156123885760208185018101518683018201520161236c565b8181111561239a576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b03851681528360208201528260408201526080606082015260006123dc6080830184612362565b9695505050505050565b600080604083850312156123f957600080fd5b612402836122e1565b91506020830135801515811461241757600080fd5b809150509250929050565b60008083601f84011261243457600080fd5b50813567ffffffffffffffff81111561244c57600080fd5b60208301915083602082850101111561229857600080fd5b6000806000806040858703121561247a57600080fd5b843567ffffffffffffffff8082111561249257600080fd5b61249e88838901612422565b909650945060208701359150808211156124b757600080fd5b506124c487828801612422565b95989497509550505050565b600080604083850312156124e357600080fd5b6124ec836122e1565b91506124fa602084016122e1565b90509250929050565b6000806000806000806080878903121561251c57600080fd5b612525876122e1565b9550612533602088016122e1565b9450604087013567ffffffffffffffff8082111561255057600080fd5b61255c8a838b01612253565b9096509450606089013591508082111561257557600080fd5b5061258289828a01612422565b979a9699509497509295939492505050565b6000806000806000608086880312156125ac57600080fd5b6125b5866122e1565b94506125c3602087016122e1565b935060408601359250606086013567ffffffffffffffff8111156125e657600080fd5b6125f288828901612422565b969995985093965092949392505050565b8481528360208201528260408201526080606082015260006123dc6080830184612362565b85815260a06020820152600061264160a0830187612362565b6001600160a01b03861660408401526060830185905282810360808401526126698185612362565b98975050505050505050565b60008060008060006080868803121561268d57600080fd5b85359450602086013593506126a4604087016122e1565b9250606086013567ffffffffffffffff8111156125e657600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601390820152724441433a44414349447320697320656d70747960681b604082015260600190565b63b95aa35560e01b600052603260045260246000fd5b63b95aa35560e01b600052601160045260246000fd5b600060001982141561276257612762612738565b5060010190565b60208082526025908201527f4441433a63616e206e6f7420617070726f76616c20746f2063757272656e742060408201526437bbb732b960d91b606082015260800190565b600181811c908216806127c257607f821691505b602082108114156127e35763b95aa35560e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4441433a63616c6c6572206973206e6f742074686520746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526021908201527f4441433a63617465676f727920737461747573206973206e6f74206e6f726d616040820152601b60fa1b606082015260800190565b60008282101561288957612889612738565b500390565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020815260006123186020830184612362565b6000821982111561290257612902612738565b500190565b60408152600061291a6040830185612362565b828103602084015261292c8185612362565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123dc90830184612362565b60006020828403121561297a57600080fd5b81516001600160e01b03198116811461231857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006114f2602083018486612992565b6001600160a01b038416815260406020820181905260009061292c9083018486612992565b63b95aa35560e01b600052603160045260246000fdfea26469706673582212203e17e48e94786a4ec34a71624da25d5e610b07093675491b9bf9b85bc72d6fa364736f6c634300080b0033"}; + + public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY); + + public static final String[] ABI_ARRAY = {"[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"DACID\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isApproval\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"DACID\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"categoryID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"categoryName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"name\":\"CreateCategory\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"categoryID\",\"type\":\"uint256\"}],\"name\":\"FreezeCategory\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"DACID\",\"type\":\"uint256\"}],\"name\":\"FreezeDAC\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"categoryID\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"DACID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"extData\",\"type\":\"string\"}],\"name\":\"Mint\",\"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\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"DACID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"extData\",\"type\":\"string\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"categoryID\",\"type\":\"uint256\"}],\"name\":\"UnfreezeCategory\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"DACID\",\"type\":\"uint256\"}],\"name\":\"UnfreezeDAC\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"DACID\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DACID\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"categoryName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"name\":\"createCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"categoryID\",\"type\":\"uint256\"}],\"name\":\"freezeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"DACIDs\",\"type\":\"uint256[]\"}],\"name\":\"freezeDAC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DACID\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getDACByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"DACID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"categoryID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"categoryID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"categoryID\",\"type\":\"uint256\"}],\"name\":\"queryCategory\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"categoryName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"DACID\",\"type\":\"uint256\"}],\"name\":\"queryDAC\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"categoryID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isApproval\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"categoryID\",\"type\":\"uint256\"}],\"name\":\"totalSupplyOfCategory\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"DACID\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"extData\",\"type\":\"string\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"DACIDs\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"extData\",\"type\":\"string\"}],\"name\":\"transferFromBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"categoryID\",\"type\":\"uint256\"}],\"name\":\"unfreezeCategory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}",",{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"DACIDs\",\"type\":\"uint256[]\"}],\"name\":\"unfreezeDAC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"}; + + public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY); + + public static final String FUNC_APPROVE = "approve"; + + public static final String FUNC_BALANCEOF = "balanceOf"; + + public static final String FUNC_BURN = "burn"; + + public static final String FUNC_CREATECATEGORY = "createCategory"; + + public static final String FUNC_FREEZECATEGORY = "freezeCategory"; + + public static final String FUNC_FREEZEDAC = "freezeDAC"; + + public static final String FUNC_GETAPPROVED = "getApproved"; + + public static final String FUNC_GETDACBYINDEX = "getDACByIndex"; + + public static final String FUNC_INITIALIZE = "initialize"; + + public static final String FUNC_ISAPPROVEDFORALL = "isApprovedForAll"; + + public static final String FUNC_MINT = "mint"; + + public static final String FUNC_OWNER = "owner"; + + public static final String FUNC_QUERYCATEGORY = "queryCategory"; + + public static final String FUNC_QUERYDAC = "queryDAC"; + + public static final String FUNC_RENOUNCEOWNERSHIP = "renounceOwnership"; + + public static final String FUNC_SETAPPROVALFORALL = "setApprovalForAll"; + + public static final String FUNC_TOTALSUPPLY = "totalSupply"; + + public static final String FUNC_TOTALSUPPLYOFCATEGORY = "totalSupplyOfCategory"; + + public static final String FUNC_TRANSFERFROM = "transferFrom"; + + public static final String FUNC_TRANSFERFROMBATCH = "transferFromBatch"; + + public static final String FUNC_TRANSFEROWNERSHIP = "transferOwnership"; + + public static final String FUNC_UNFREEZECATEGORY = "unfreezeCategory"; + + public static final String FUNC_UNFREEZEDAC = "unfreezeDAC"; + + public static final Event APPROVAL_EVENT = new Event("Approval", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + public static final Event APPROVALFORALL_EVENT = new Event("ApprovalForAll", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference
(true) {}, new TypeReference() {})); + ; + + public static final Event BURN_EVENT = new Event("Burn", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + public static final Event CREATECATEGORY_EVENT = new Event("CreateCategory", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {}, new TypeReference() {}, new TypeReference() {})); + ; + + public static final Event FREEZECATEGORY_EVENT = new Event("FreezeCategory", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + public static final Event FREEZEDAC_EVENT = new Event("FreezeDAC", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + public static final Event MINT_EVENT = new Event("Mint", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference
() {}, new TypeReference(true) {}, new TypeReference(true) {}, new TypeReference() {})); + ; + + public static final Event OWNERSHIPTRANSFERRED_EVENT = new Event("OwnershipTransferred", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + public static final Event TRANSFER_EVENT = new Event("Transfer", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference
(true) {}, new TypeReference(true) {}, new TypeReference() {})); + ; + + public static final Event UNFREEZECATEGORY_EVENT = new Event("UnfreezeCategory", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + public static final Event UNFREEZEDAC_EVENT = new Event("UnfreezeDAC", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference(true) {})); + ; + + protected BTSIDAC(String contractAddress, Client client, CryptoKeyPair credential) { + super(getBinary(client.getCryptoSuite()), contractAddress, client, credential); + } + + public static String getBinary(CryptoSuite cryptoSuite) { + return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY); + } + + public static String getABI() { + return ABI; + } + + public List getApprovalEvents(TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(APPROVAL_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (EventValuesWithLog eventValues : valueList) { + ApprovalEventResponse typedResponse = new ApprovalEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.operator = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.DACID = (BigInteger) eventValues.getIndexedValues().get(2).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getApprovalForAllEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(APPROVALFORALL_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (EventValuesWithLog eventValues : valueList) { + ApprovalForAllEventResponse typedResponse = new ApprovalForAllEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.operator = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.isApproval = (Boolean) eventValues.getNonIndexedValues().get(0).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getBurnEvents(TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(BURN_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (EventValuesWithLog eventValues : valueList) { + BurnEventResponse typedResponse = new BurnEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.DACID = (BigInteger) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getCreateCategoryEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(CREATECATEGORY_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (EventValuesWithLog eventValues : valueList) { + CreateCategoryEventResponse typedResponse = new CreateCategoryEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.creator = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.categoryID = (BigInteger) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.categoryName = (String) eventValues.getNonIndexedValues().get(0).getValue(); + typedResponse.metadata = (String) eventValues.getNonIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getFreezeCategoryEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(FREEZECATEGORY_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (EventValuesWithLog eventValues : valueList) { + FreezeCategoryEventResponse typedResponse = new FreezeCategoryEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.operator = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.categoryID = (BigInteger) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getFreezeDACEvents(TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(FREEZEDAC_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (EventValuesWithLog eventValues : valueList) { + FreezeDACEventResponse typedResponse = new FreezeDACEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.operator = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.DACID = (BigInteger) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getMintEvents(TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(MINT_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (EventValuesWithLog eventValues : valueList) { + MintEventResponse typedResponse = new MintEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.from = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.categoryID = (BigInteger) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.DACID = (BigInteger) eventValues.getIndexedValues().get(2).getValue(); + typedResponse.to = (String) eventValues.getNonIndexedValues().get(0).getValue(); + typedResponse.extData = (String) eventValues.getNonIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getOwnershipTransferredEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(OWNERSHIPTRANSFERRED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (EventValuesWithLog eventValues : valueList) { + OwnershipTransferredEventResponse typedResponse = new OwnershipTransferredEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.previousOwner = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.newOwner = (String) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getTransferEvents(TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(TRANSFER_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (EventValuesWithLog eventValues : valueList) { + TransferEventResponse typedResponse = new TransferEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.from = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue(); + typedResponse.DACID = (BigInteger) eventValues.getIndexedValues().get(2).getValue(); + typedResponse.extData = (String) eventValues.getNonIndexedValues().get(0).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getUnfreezeCategoryEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(UNFREEZECATEGORY_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (EventValuesWithLog eventValues : valueList) { + UnfreezeCategoryEventResponse typedResponse = new UnfreezeCategoryEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.operator = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.categoryID = (BigInteger) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getUnfreezeDACEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(UNFREEZEDAC_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (EventValuesWithLog eventValues : valueList) { + UnfreezeDACEventResponse typedResponse = new UnfreezeDACEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.operator = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.DACID = (BigInteger) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public TransactionReceipt approve(String to, BigInteger DACID) { + final Function function = new Function( + FUNC_APPROVE, + Arrays.asList(new Address(to), + new Uint256(DACID)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String approve(String to, BigInteger DACID, TransactionCallback callback) { + final Function function = new Function( + FUNC_APPROVE, + Arrays.asList(new Address(to), + new Uint256(DACID)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForApprove(String to, BigInteger DACID) { + final Function function = new Function( + FUNC_APPROVE, + Arrays.asList(new Address(to), + new Uint256(DACID)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple2 getApproveInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_APPROVE, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (BigInteger) results.get(1).getValue() + ); + } + + public BigInteger balanceOf(String owner) throws ContractException { + final Function function = new Function(FUNC_BALANCEOF, + Arrays.asList(new Address(owner)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public TransactionReceipt burn(BigInteger DACID) { + final Function function = new Function( + FUNC_BURN, + Arrays.asList(new Uint256(DACID)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String burn(BigInteger DACID, TransactionCallback callback) { + final Function function = new Function( + FUNC_BURN, + Arrays.asList(new Uint256(DACID)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForBurn(BigInteger DACID) { + final Function function = new Function( + FUNC_BURN, + Arrays.asList(new Uint256(DACID)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple1 getBurnInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_BURN, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (BigInteger) results.get(0).getValue() + ); + } + + public TransactionReceipt createCategory(String categoryName, String metadata) { + final Function function = new Function( + FUNC_CREATECATEGORY, + Arrays.asList(new Utf8String(categoryName), + new Utf8String(metadata)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String createCategory(String categoryName, String metadata, + TransactionCallback callback) { + final Function function = new Function( + FUNC_CREATECATEGORY, + Arrays.asList(new Utf8String(categoryName), + new Utf8String(metadata)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForCreateCategory(String categoryName, String metadata) { + final Function function = new Function( + FUNC_CREATECATEGORY, + Arrays.asList(new Utf8String(categoryName), + new Utf8String(metadata)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple2 getCreateCategoryInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_CREATECATEGORY, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt freezeCategory(BigInteger categoryID) { + final Function function = new Function( + FUNC_FREEZECATEGORY, + Arrays.asList(new Uint256(categoryID)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String freezeCategory(BigInteger categoryID, TransactionCallback callback) { + final Function function = new Function( + FUNC_FREEZECATEGORY, + Arrays.asList(new Uint256(categoryID)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForFreezeCategory(BigInteger categoryID) { + final Function function = new Function( + FUNC_FREEZECATEGORY, + Arrays.asList(new Uint256(categoryID)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple1 getFreezeCategoryInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_FREEZECATEGORY, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (BigInteger) results.get(0).getValue() + ); + } + + public TransactionReceipt freezeDAC(List DACIDs) { + final Function function = new Function( + FUNC_FREEZEDAC, + Arrays.asList(new DynamicArray( + Uint256.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(DACIDs, Uint256.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String freezeDAC(List DACIDs, TransactionCallback callback) { + final Function function = new Function( + FUNC_FREEZEDAC, + Arrays.asList(new DynamicArray( + Uint256.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(DACIDs, Uint256.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForFreezeDAC(List DACIDs) { + final Function function = new Function( + FUNC_FREEZEDAC, + Arrays.asList(new DynamicArray( + Uint256.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(DACIDs, Uint256.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple1> getFreezeDACInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_FREEZEDAC, + Arrays.asList(), + Arrays.>asList(new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1>( + + convertToNative((List) results.get(0).getValue()) + ); + } + + public String getApproved(BigInteger DACID) throws ContractException { + final Function function = new Function(FUNC_GETAPPROVED, + Arrays.asList(new Uint256(DACID)), + Arrays.>asList(new TypeReference
() {})); + return executeCallWithSingleValueReturn(function, String.class); + } + + public Tuple4 getDACByIndex(String owner, + BigInteger index) throws ContractException { + final Function function = new Function(FUNC_GETDACBYINDEX, + Arrays.asList(new Address(owner), + new Uint256(index)), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference() {}, new TypeReference() {})); + List results = executeCallWithMultipleValueReturn(function); + return new Tuple4( + (BigInteger) results.get(0).getValue(), + (BigInteger) results.get(1).getValue(), + (BigInteger) results.get(2).getValue(), + (String) results.get(3).getValue()); + } + + public TransactionReceipt initialize() { + final Function function = new Function( + FUNC_INITIALIZE, + Arrays.asList(), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String initialize(TransactionCallback callback) { + final Function function = new Function( + FUNC_INITIALIZE, + Arrays.asList(), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForInitialize() { + final Function function = new Function( + FUNC_INITIALIZE, + Arrays.asList(), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Boolean isApprovedForAll(String owner, String operator) throws ContractException { + final Function function = new Function(FUNC_ISAPPROVEDFORALL, + Arrays.asList(new Address(owner), + new Address(operator)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, Boolean.class); + } + + public TransactionReceipt mint(BigInteger categoryID, BigInteger amount, String to, + String metadata) { + final Function function = new Function( + FUNC_MINT, + Arrays.asList(new Uint256(categoryID), + new Uint256(amount), + new Address(to), + new Utf8String(metadata)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String mint(BigInteger categoryID, BigInteger amount, String to, String metadata, + TransactionCallback callback) { + final Function function = new Function( + FUNC_MINT, + Arrays.asList(new Uint256(categoryID), + new Uint256(amount), + new Address(to), + new Utf8String(metadata)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForMint(BigInteger categoryID, BigInteger amount, String to, + String metadata) { + final Function function = new Function( + FUNC_MINT, + Arrays.asList(new Uint256(categoryID), + new Uint256(amount), + new Address(to), + new Utf8String(metadata)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple4 getMintInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_MINT, + Arrays.asList(), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference
() {}, new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple4( + + (BigInteger) results.get(0).getValue(), + (BigInteger) results.get(1).getValue(), + (String) results.get(2).getValue(), + (String) results.get(3).getValue() + ); + } + + public String owner() throws ContractException { + final Function function = new Function(FUNC_OWNER, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {})); + return executeCallWithSingleValueReturn(function, String.class); + } + + public Tuple5 queryCategory( + BigInteger categoryID) throws ContractException { + final Function function = new Function(FUNC_QUERYCATEGORY, + Arrays.asList(new Uint256(categoryID)), + Arrays.>asList(new TypeReference() {}, new TypeReference() {}, new TypeReference
() {}, new TypeReference() {}, new TypeReference() {})); + List results = executeCallWithMultipleValueReturn(function); + return new Tuple5( + (BigInteger) results.get(0).getValue(), + (String) results.get(1).getValue(), + (String) results.get(2).getValue(), + (BigInteger) results.get(3).getValue(), + (String) results.get(4).getValue()); + } + + public Tuple4 queryDAC(BigInteger DACID) throws + ContractException { + final Function function = new Function(FUNC_QUERYDAC, + Arrays.asList(new Uint256(DACID)), + Arrays.>asList(new TypeReference
() {}, new TypeReference() {}, new TypeReference() {}, new TypeReference() {})); + List results = executeCallWithMultipleValueReturn(function); + return new Tuple4( + (String) results.get(0).getValue(), + (BigInteger) results.get(1).getValue(), + (BigInteger) results.get(2).getValue(), + (String) results.get(3).getValue()); + } + + public TransactionReceipt renounceOwnership() { + final Function function = new Function( + FUNC_RENOUNCEOWNERSHIP, + Arrays.asList(), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String renounceOwnership(TransactionCallback callback) { + final Function function = new Function( + FUNC_RENOUNCEOWNERSHIP, + Arrays.asList(), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForRenounceOwnership() { + final Function function = new Function( + FUNC_RENOUNCEOWNERSHIP, + Arrays.asList(), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public TransactionReceipt setApprovalForAll(String to, Boolean isApproval) { + final Function function = new Function( + FUNC_SETAPPROVALFORALL, + Arrays.asList(new Address(to), + new Bool(isApproval)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String setApprovalForAll(String to, Boolean isApproval, TransactionCallback callback) { + final Function function = new Function( + FUNC_SETAPPROVALFORALL, + Arrays.asList(new Address(to), + new Bool(isApproval)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForSetApprovalForAll(String to, Boolean isApproval) { + final Function function = new Function( + FUNC_SETAPPROVALFORALL, + Arrays.asList(new Address(to), + new Bool(isApproval)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple2 getSetApprovalForAllInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_SETAPPROVALFORALL, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (Boolean) results.get(1).getValue() + ); + } + + public BigInteger totalSupply() throws ContractException { + final Function function = new Function(FUNC_TOTALSUPPLY, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public BigInteger totalSupplyOfCategory(BigInteger categoryID) throws ContractException { + final Function function = new Function(FUNC_TOTALSUPPLYOFCATEGORY, + Arrays.asList(new Uint256(categoryID)), + Arrays.>asList(new TypeReference() {})); + return executeCallWithSingleValueReturn(function, BigInteger.class); + } + + public TransactionReceipt transferFrom(String from, String to, BigInteger DACID, + String extData) { + final Function function = new Function( + FUNC_TRANSFERFROM, + Arrays.asList(new Address(from), + new Address(to), + new Uint256(DACID), + new Utf8String(extData)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String transferFrom(String from, String to, BigInteger DACID, String extData, + TransactionCallback callback) { + final Function function = new Function( + FUNC_TRANSFERFROM, + Arrays.asList(new Address(from), + new Address(to), + new Uint256(DACID), + new Utf8String(extData)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForTransferFrom(String from, String to, BigInteger DACID, + String extData) { + final Function function = new Function( + FUNC_TRANSFERFROM, + Arrays.asList(new Address(from), + new Address(to), + new Uint256(DACID), + new Utf8String(extData)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple4 getTransferFromInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_TRANSFERFROM, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference
() {}, new TypeReference() {}, new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple4( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + (BigInteger) results.get(2).getValue(), + (String) results.get(3).getValue() + ); + } + + public TransactionReceipt transferFromBatch(String from, String to, List DACIDs, + String extData) { + final Function function = new Function( + FUNC_TRANSFERFROMBATCH, + Arrays.asList(new Address(from), + new Address(to), + new DynamicArray( + Uint256.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(DACIDs, Uint256.class)), + new Utf8String(extData)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String transferFromBatch(String from, String to, List DACIDs, String extData, + TransactionCallback callback) { + final Function function = new Function( + FUNC_TRANSFERFROMBATCH, + Arrays.asList(new Address(from), + new Address(to), + new DynamicArray( + Uint256.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(DACIDs, Uint256.class)), + new Utf8String(extData)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForTransferFromBatch(String from, String to, + List DACIDs, String extData) { + final Function function = new Function( + FUNC_TRANSFERFROMBATCH, + Arrays.asList(new Address(from), + new Address(to), + new DynamicArray( + Uint256.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(DACIDs, Uint256.class)), + new Utf8String(extData)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple4, String> getTransferFromBatchInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_TRANSFERFROMBATCH, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference
() {}, new TypeReference>() {}, new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple4, String>( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + convertToNative((List) results.get(2).getValue()), + (String) results.get(3).getValue() + ); + } + + public TransactionReceipt transferOwnership(String newOwner) { + final Function function = new Function( + FUNC_TRANSFEROWNERSHIP, + Arrays.asList(new Address(newOwner)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String transferOwnership(String newOwner, TransactionCallback callback) { + final Function function = new Function( + FUNC_TRANSFEROWNERSHIP, + Arrays.asList(new Address(newOwner)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForTransferOwnership(String newOwner) { + final Function function = new Function( + FUNC_TRANSFEROWNERSHIP, + Arrays.asList(new Address(newOwner)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple1 getTransferOwnershipInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_TRANSFEROWNERSHIP, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public TransactionReceipt unfreezeCategory(BigInteger categoryID) { + final Function function = new Function( + FUNC_UNFREEZECATEGORY, + Arrays.asList(new Uint256(categoryID)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String unfreezeCategory(BigInteger categoryID, TransactionCallback callback) { + final Function function = new Function( + FUNC_UNFREEZECATEGORY, + Arrays.asList(new Uint256(categoryID)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForUnfreezeCategory(BigInteger categoryID) { + final Function function = new Function( + FUNC_UNFREEZECATEGORY, + Arrays.asList(new Uint256(categoryID)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple1 getUnfreezeCategoryInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_UNFREEZECATEGORY, + Arrays.asList(), + Arrays.>asList(new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (BigInteger) results.get(0).getValue() + ); + } + + public TransactionReceipt unfreezeDAC(List DACIDs) { + final Function function = new Function( + FUNC_UNFREEZEDAC, + Arrays.asList(new DynamicArray( + Uint256.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(DACIDs, Uint256.class))), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String unfreezeDAC(List DACIDs, TransactionCallback callback) { + final Function function = new Function( + FUNC_UNFREEZEDAC, + Arrays.asList(new DynamicArray( + Uint256.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(DACIDs, Uint256.class))), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForUnfreezeDAC(List DACIDs) { + final Function function = new Function( + FUNC_UNFREEZEDAC, + Arrays.asList(new DynamicArray( + Uint256.class, + org.fisco.bcos.sdk.v3.codec.Utils.typeMap(DACIDs, Uint256.class))), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple1> getUnfreezeDACInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_UNFREEZEDAC, + Arrays.asList(), + Arrays.>asList(new TypeReference>() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1>( + + convertToNative((List) results.get(0).getValue()) + ); + } + + public static BTSIDAC load(String contractAddress, Client client, CryptoKeyPair credential) { + return new BTSIDAC(contractAddress, client, credential); + } + + public static BTSIDAC deploy(Client client, CryptoKeyPair credential) throws ContractException { + return deploy(BTSIDAC.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null); + } + + public static class ApprovalEventResponse { + public TransactionReceipt.Logs log; + + public String owner; + + public String operator; + + public BigInteger DACID; + } + + public static class ApprovalForAllEventResponse { + public TransactionReceipt.Logs log; + + public String owner; + + public String operator; + + public Boolean isApproval; + } + + public static class BurnEventResponse { + public TransactionReceipt.Logs log; + + public String owner; + + public BigInteger DACID; + } + + public static class CreateCategoryEventResponse { + public TransactionReceipt.Logs log; + + public String creator; + + public BigInteger categoryID; + + public String categoryName; + + public String metadata; + } + + public static class FreezeCategoryEventResponse { + public TransactionReceipt.Logs log; + + public String operator; + + public BigInteger categoryID; + } + + public static class FreezeDACEventResponse { + public TransactionReceipt.Logs log; + + public String operator; + + public BigInteger DACID; + } + + public static class MintEventResponse { + public TransactionReceipt.Logs log; + + public String from; + + public BigInteger categoryID; + + public BigInteger DACID; + + public String to; + + public String extData; + } + + public static class OwnershipTransferredEventResponse { + public TransactionReceipt.Logs log; + + public String previousOwner; + + public String newOwner; + } + + public static class TransferEventResponse { + public TransactionReceipt.Logs log; + + public String from; + + public String to; + + public BigInteger DACID; + + public String extData; + } + + public static class UnfreezeCategoryEventResponse { + public TransactionReceipt.Logs log; + + public String operator; + + public BigInteger categoryID; + } + + public static class UnfreezeDACEventResponse { + public TransactionReceipt.Logs log; + + public String operator; + + public BigInteger DACID; + } +} diff --git a/java/ProxyAdmin.java b/java/ProxyAdmin.java new file mode 100644 index 0000000000000000000000000000000000000000..5cd83357a348f805a885098c23c8599adc557ba2 --- /dev/null +++ b/java/ProxyAdmin.java @@ -0,0 +1,309 @@ +package com.btsi.contract; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes; +import org.fisco.bcos.sdk.v3.codec.datatypes.Event; +import org.fisco.bcos.sdk.v3.codec.datatypes.Function; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple3; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; + +@SuppressWarnings("unchecked") +public class ProxyAdmin extends Contract { + public static final String[] BINARY_ARRAY = {"608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610890806100616000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b3660046105f2565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d161023c565b005b3480156100df57600080fd5b506100d16100ee366004610616565b6102b9565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f366004610665565b610343565b34801561013057600080fd5b506100d161013f366004610616565b6103d4565b34801561015057600080fd5b506100d161015f3660046105f2565b61042c565b34801561017057600080fd5b506100a061017f3660046105f2565b610516565b60007f5c60da1b04210c25e1974b6edfcf5bb7c7365b6a88c42319fcbd024464075cc281806001600160a01b0385166101c3635c60da1b60e01b610551565b6040516101d0919061076b565b600060405180830381855afa9150503d806000811461020b576040519150601f19603f3d011682016040523d82523d6000602084013e610210565b606091505b50915091508161021f57600080fd5b808060200190518101906102339190610787565b95945050505050565b6000546001600160a01b0316331461026f5760405162461bcd60e51b8152600401610266906107a4565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102e35760405162461bcd60e51b8152600401610266906107a4565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561032757600080fd5b505af115801561033b573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461036d5760405162461bcd60e51b8152600401610266906107a4565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061039d90869086906004016107d9565b6000604051808303818588803b1580156103b657600080fd5b505af11580156103ca573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146103fe5760405162461bcd60e51b8152600401610266906107a4565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161030d565b6000546001600160a01b031633146104565760405162461bcd60e51b8152600401610266906107a4565b6001600160a01b0381166104bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610266565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60007ff851a44064d54ebc488774050c771bacc14f01dd7456abacb48978dba9cd92a481806001600160a01b0385166101c36303e1469160e61b5b6040805160048082528183019092526060916000919060208201818036833701905050905060005b60048110156105d3578381600481106105945761059461081b565b1a60f81b8282815181106105aa576105aa61081b565b60200101906001600160f81b031916908160001a905350806105cb81610831565b915050610579565b5092915050565b6001600160a01b03811681146105ef57600080fd5b50565b60006020828403121561060457600080fd5b813561060f816105da565b9392505050565b6000806040838503121561062957600080fd5b8235610634816105da565b91506020830135610644816105da565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561067a57600080fd5b8335610685816105da565b92506020840135610695816105da565b9150604084013567ffffffffffffffff808211156106b257600080fd5b818601915086601f8301126106c657600080fd5b8135818111156106d8576106d861064f565b604051601f8201601f19908116603f011681019083821181831017156107005761070061064f565b8160405282815289602084870101111561071957600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60005b8381101561075657818101518382015260200161073e565b83811115610765576000848401525b50505050565b6000825161077d81846020870161073b565b9190910192915050565b60006020828403121561079957600080fd5b815161060f816105da565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60018060a01b0383168152604060208201526000825180604084015261080681606085016020870161073b565b601f01601f1916919091016060019392505050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561085357634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220f476616c8655ddb86a4e0eb97815db07902ffd52bfb5216954f55b76f9b126b764736f6c634300080b0033"}; + + public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY); + + public static final String[] SM_BINARY_ARRAY = {"608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d0908290a350610895806100616000396000f3fe60806040526004361061007b5760003560e01c8063d366253d1161004e578063d366253d14610118578063d42d0f4f14610138578063d86e29e214610158578063db1fc60c1461016d57600080fd5b806316cad12a146100805780635089e2c8146100a25780635defeee3146100d85780636c57245d146100f8575b600080fd5b34801561008c57600080fd5b506100a061009b3660046105f7565b610180565b005b3480156100ae57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b3480156100e457600080fd5b506100bc6100f33660046105f7565b610275565b34801561010457600080fd5b506100bc6101133660046105f7565b61032d565b34801561012457600080fd5b506100a061013336600461061b565b61036b565b34801561014457600080fd5b506100a061015336600461061b565b6103f6565b34801561016457600080fd5b506100a061044f565b6100a061017b36600461066a565b6104c4565b6000546001600160a01b031633146101b457604051636381e58960e11b81526004016101ab90610740565b60405180910390fd5b6001600160a01b03811661021a57604051636381e58960e11b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101ab565b600080546040516001600160a01b03808516939216917f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60007fd5696bb175b326f8ce5dbe1ba5f41da312aed21a7f90cc42d40b8a20f2004c7181806001600160a01b0385166102b463d5696bb160e01b610556565b6040516102c191906107a5565b600060405180830381855afa9150503d80600081146102fc576040519150601f19603f3d011682016040523d82523d6000602084013e610301565b606091505b50915091508161031057600080fd5b8080602001905181019061032491906107c1565b95945050505050565b60007ff15228001de5006b7e364229f9fb3c2f54a1e8f2aa8887d686ce09f2f04fc23181806001600160a01b0385166102b4621e2a4560eb1b610556565b6000546001600160a01b0316331461039657604051636381e58960e11b81526004016101ab90610740565b604051633a2a322560e21b81526001600160a01b03828116600483015283169063e8a8c894906024015b600060405180830381600087803b1580156103da57600080fd5b505af11580156103ee573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461042157604051636381e58960e11b81526004016101ab90610740565b60405163333b0add60e11b81526001600160a01b03828116600483015283169063667615ba906024016103c0565b6000546001600160a01b0316331461047a57604051636381e58960e11b81526004016101ab90610740565b600080546040516001600160a01b03909116907f5c7c30d4a0f08950cb23be4132957b357fa5dfdb0fcf218f81b86a1c036e47d0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146104ef57604051636381e58960e11b81526004016101ab90610740565b60405163207fa8b960e01b81526001600160a01b0384169063207fa8b990349061051f90869086906004016107de565b6000604051808303818588803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b5050505050505050565b6040805160048082528183019092526060916000919060208201818036833701905050905060005b60048110156105d85783816004811061059957610599610820565b1a60f81b8282815181106105af576105af610820565b60200101906001600160f81b031916908160001a905350806105d081610836565b91505061057e565b5092915050565b6001600160a01b03811681146105f457600080fd5b50565b60006020828403121561060957600080fd5b8135610614816105df565b9392505050565b6000806040838503121561062e57600080fd5b8235610639816105df565b91506020830135610649816105df565b809150509250929050565b63b95aa35560e01b600052604160045260246000fd5b60008060006060848603121561067f57600080fd5b833561068a816105df565b9250602084013561069a816105df565b9150604084013567ffffffffffffffff808211156106b757600080fd5b818601915086601f8301126106cb57600080fd5b8135818111156106dd576106dd610654565b604051601f8201601f19908116603f0116810190838211818310171561070557610705610654565b8160405282815289602084870101111561071e57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60005b83811015610790578181015183820152602001610778565b8381111561079f576000848401525b50505050565b600082516107b7818460208701610775565b9190910192915050565b6000602082840312156107d357600080fd5b8151610614816105df565b60018060a01b0383168152604060208201526000825180604084015261080b816060850160208701610775565b601f01601f1916919091016060019392505050565b63b95aa35560e01b600052603260045260246000fd5b60006000198214156108585763b95aa35560e01b600052601160045260246000fd5b506001019056fea26469706673582212208150299ee9d681a151e754e5c2cb5d848c173386a74593edd16e82b8222bcb0e64736f6c634300080b0033"}; + + public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY); + + public static final String[] ABI_ARRAY = {"[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeProxyAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]"}; + + public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY); + + public static final String FUNC_CHANGEPROXYADMIN = "changeProxyAdmin"; + + public static final String FUNC_GETPROXYADMIN = "getProxyAdmin"; + + public static final String FUNC_GETPROXYIMPLEMENTATION = "getProxyImplementation"; + + public static final String FUNC_OWNER = "owner"; + + public static final String FUNC_RENOUNCEOWNERSHIP = "renounceOwnership"; + + public static final String FUNC_TRANSFEROWNERSHIP = "transferOwnership"; + + public static final String FUNC_UPGRADE = "upgrade"; + + public static final String FUNC_UPGRADEANDCALL = "upgradeAndCall"; + + public static final Event OWNERSHIPTRANSFERRED_EVENT = new Event("OwnershipTransferred", + Arrays.>asList(new TypeReference
(true) {}, new TypeReference
(true) {})); + ; + + protected ProxyAdmin(String contractAddress, Client client, CryptoKeyPair credential) { + super(getBinary(client.getCryptoSuite()), contractAddress, client, credential); + } + + public static String getBinary(CryptoSuite cryptoSuite) { + return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY); + } + + public static String getABI() { + return ABI; + } + + public List getOwnershipTransferredEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(OWNERSHIPTRANSFERRED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + OwnershipTransferredEventResponse typedResponse = new OwnershipTransferredEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.previousOwner = (String) eventValues.getIndexedValues().get(0).getValue(); + typedResponse.newOwner = (String) eventValues.getIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public TransactionReceipt changeProxyAdmin(String proxy, String newAdmin) { + final Function function = new Function( + FUNC_CHANGEPROXYADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newAdmin)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String changeProxyAdmin(String proxy, String newAdmin, TransactionCallback callback) { + final Function function = new Function( + FUNC_CHANGEPROXYADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newAdmin)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForChangeProxyAdmin(String proxy, String newAdmin) { + final Function function = new Function( + FUNC_CHANGEPROXYADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newAdmin)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple2 getChangeProxyAdminInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_CHANGEPROXYADMIN, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public String getProxyAdmin(String proxy) throws ContractException { + final Function function = new Function(FUNC_GETPROXYADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy)), + Arrays.>asList(new TypeReference
() {})); + return executeCallWithSingleValueReturn(function, String.class); + } + + public String getProxyImplementation(String proxy) throws ContractException { + final Function function = new Function(FUNC_GETPROXYIMPLEMENTATION, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy)), + Arrays.>asList(new TypeReference
() {})); + return executeCallWithSingleValueReturn(function, String.class); + } + + public String owner() throws ContractException { + final Function function = new Function(FUNC_OWNER, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {})); + return executeCallWithSingleValueReturn(function, String.class); + } + + public TransactionReceipt renounceOwnership() { + final Function function = new Function( + FUNC_RENOUNCEOWNERSHIP, + Arrays.asList(), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String renounceOwnership(TransactionCallback callback) { + final Function function = new Function( + FUNC_RENOUNCEOWNERSHIP, + Arrays.asList(), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForRenounceOwnership() { + final Function function = new Function( + FUNC_RENOUNCEOWNERSHIP, + Arrays.asList(), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public TransactionReceipt transferOwnership(String newOwner) { + final Function function = new Function( + FUNC_TRANSFEROWNERSHIP, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newOwner)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String transferOwnership(String newOwner, TransactionCallback callback) { + final Function function = new Function( + FUNC_TRANSFEROWNERSHIP, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newOwner)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForTransferOwnership(String newOwner) { + final Function function = new Function( + FUNC_TRANSFEROWNERSHIP, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newOwner)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple1 getTransferOwnershipInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_TRANSFEROWNERSHIP, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public TransactionReceipt upgrade(String proxy, String implementation) { + final Function function = new Function( + FUNC_UPGRADE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(implementation)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String upgrade(String proxy, String implementation, TransactionCallback callback) { + final Function function = new Function( + FUNC_UPGRADE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(implementation)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForUpgrade(String proxy, String implementation) { + final Function function = new Function( + FUNC_UPGRADE, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(implementation)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple2 getUpgradeInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_UPGRADE, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue() + ); + } + + public TransactionReceipt upgradeAndCall(String proxy, String implementation, byte[] data) { + final Function function = new Function( + FUNC_UPGRADEANDCALL, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(implementation), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(data)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String upgradeAndCall(String proxy, String implementation, byte[] data, + TransactionCallback callback) { + final Function function = new Function( + FUNC_UPGRADEANDCALL, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(implementation), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(data)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForUpgradeAndCall(String proxy, String implementation, + byte[] data) { + final Function function = new Function( + FUNC_UPGRADEANDCALL, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(proxy), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(implementation), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(data)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple3 getUpgradeAndCallInput( + TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_UPGRADEANDCALL, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference
() {}, new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple3( + + (String) results.get(0).getValue(), + (String) results.get(1).getValue(), + (byte[]) results.get(2).getValue() + ); + } + + public static ProxyAdmin load(String contractAddress, Client client, CryptoKeyPair credential) { + return new ProxyAdmin(contractAddress, client, credential); + } + + public static ProxyAdmin deploy(Client client, CryptoKeyPair credential) throws + ContractException { + return deploy(ProxyAdmin.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null); + } + + public static class OwnershipTransferredEventResponse { + public TransactionReceipt.Logs log; + + public String previousOwner; + + public String newOwner; + } +} diff --git a/java/TransparentUpgradeableProxy.java b/java/TransparentUpgradeableProxy.java new file mode 100644 index 0000000000000000000000000000000000000000..61bb188eefd4d72262dc699de5de0e83fbdc504e --- /dev/null +++ b/java/TransparentUpgradeableProxy.java @@ -0,0 +1,307 @@ +package com.btsi.contract; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.abi.FunctionEncoder; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes; +import org.fisco.bcos.sdk.v3.codec.datatypes.Event; +import org.fisco.bcos.sdk.v3.codec.datatypes.Function; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; + +@SuppressWarnings("unchecked") +public class TransparentUpgradeableProxy extends Contract { + public static final String[] BINARY_ARRAY = {"608060405260405162000a0438038062000a0483398101604081905262000026916200021f565b82816200003382620000c1565b805115620000aa576000826001600160a01b031682604051620000579190620002ff565b600060405180830381855af49150503d806000811462000094576040519150601f19603f3d011682016040523d82523d6000602084013e62000099565b606091505b5050905080620000a857600080fd5b505b50620000b890508262000184565b50505062000343565b620000d781620001b360201b620003501760201c565b6200014e5760405162461bcd60e51b815260206004820152603660248201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e746160448201527f74696f6e206973206e6f74206120636f6e747261637400000000000000000000606482015260840160405180910390fd5b60006200017d60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6200031d565b9190915550565b60006200017d60017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046200031d565b3b151590565b80516001600160a01b0381168114620001d157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000209578181015183820152602001620001ef565b8381111562000219576000848401525b50505050565b6000806000606084860312156200023557600080fd5b6200024084620001b9565b92506200025060208501620001b9565b60408501519092506001600160401b03808211156200026e57600080fd5b818601915086601f8301126200028357600080fd5b815181811115620002985762000298620001d6565b604051601f8201601f19908116603f01168101908382118183101715620002c357620002c3620001d6565b81604052828152896020848701011115620002dd57600080fd5b620002f0836020830160208801620001ec565b80955050505050509250925092565b6000825162000313818460208701620001ec565b9190910192915050565b6000828210156200033e57634e487b7160e01b600052601160045260246000fd5b500390565b6106b180620003536000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046105a1565b610118565b61005b6100933660046105c3565b61014d565b3480156100a457600080fd5b506100ad6101f4565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046105a1565b61022f565b3480156100f557600080fd5b506100ad610325565b610106610356565b6101166101116103f0565b610425565b565b610120610449565b6001600160a01b0316336001600160a01b031614156101455761014281610477565b50565b6101426100fe565b610155610449565b6001600160a01b0316336001600160a01b031614156101e75761017783610477565b6000836001600160a01b03168383604051610193929190610646565b600060405180830381855af49150503d80600081146101ce576040519150601f19603f3d011682016040523d82523d6000602084013e6101d3565b606091505b50509050806101e157600080fd5b50505050565b6101ef6100fe565b505050565b60006101fe610449565b6001600160a01b0316336001600160a01b031614156102245761021f6103f0565b905090565b61022c6100fe565b90565b610237610449565b6001600160a01b0316336001600160a01b03161415610145576001600160a01b0381166102d15760405162461bcd60e51b815260206004820152603a60248201527f5472616e73706172656e745570677261646561626c6550726f78793a206e657760448201527f2061646d696e20697320746865207a65726f206164647265737300000000000060648201526084015b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6102fa610449565b604080516001600160a01b03928316815291841660208301520160405180910390a1610142816104b7565b600061032f610449565b6001600160a01b0316336001600160a01b031614156102245761021f610449565b3b151590565b61035e610449565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4016102c8565b60008061041e60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610656565b5492915050565b3660008037600080366000845af43d6000803e808015610444573d6000f35b3d6000fd5b60008061041e60017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104610656565b610480816104eb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006104e460017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104610656565b9190915550565b803b6105585760405162461bcd60e51b815260206004820152603660248201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e74616044820152751d1a5bdb881a5cc81b9bdd08184818dbdb9d1c9858dd60521b60648201526084016102c8565b60006104e460017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610656565b80356001600160a01b038116811461059c57600080fd5b919050565b6000602082840312156105b357600080fd5b6105bc82610585565b9392505050565b6000806000604084860312156105d857600080fd5b6105e184610585565b9250602084013567ffffffffffffffff808211156105fe57600080fd5b818601915086601f83011261061257600080fd5b81358181111561062157600080fd5b87602082850101111561063357600080fd5b6020830194508093505050509250925092565b8183823760009101908152919050565b60008282101561067657634e487b7160e01b600052601160045260246000fd5b50039056fea26469706673582212207c57174660757dfbcd1426e042490ca015720bfe1ebc992bc26914f05fc7264f64736f6c634300080b0033"}; + + public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY); + + public static final String[] SM_BINARY_ARRAY = {"608060405260405162000a0838038062000a08833981016040819052620000269162000220565b82816200003382620000c1565b805115620000aa576000826001600160a01b03168260405162000057919062000300565b600060405180830381855af49150503d806000811462000094576040519150601f19603f3d011682016040523d82523d6000602084013e62000099565b606091505b5050905080620000a857600080fd5b505b50620000b890508262000185565b50505062000344565b620000d781620001b460201b620003511760201c565b6200014f57604051636381e58960e11b815260206004820152603660248201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e746160448201527f74696f6e206973206e6f74206120636f6e747261637400000000000000000000606482015260840160405180910390fd5b60006200017e60017fc491a4bc7f22df3d1fef738d9a3c4c3d72de30f6f5b4b051104051df906485f76200031e565b9190915550565b60006200017e60017f1739bb05de6bfb1e46d9ecd038d53871bf808b66c6cb0c157e00eb42c2717ebb6200031e565b3b151590565b80516001600160a01b0381168114620001d257600080fd5b919050565b63b95aa35560e01b600052604160045260246000fd5b60005b838110156200020a578181015183820152602001620001f0565b838111156200021a576000848401525b50505050565b6000806000606084860312156200023657600080fd5b6200024184620001ba565b92506200025160208501620001ba565b60408501519092506001600160401b03808211156200026f57600080fd5b818601915086601f8301126200028457600080fd5b815181811115620002995762000299620001d7565b604051601f8201601f19908116603f01168101908382118183101715620002c457620002c4620001d7565b81604052828152896020848701011115620002de57600080fd5b620002f1836020830160208801620001ed565b80955050505050509250925092565b6000825162000314818460208701620001ed565b9190910192915050565b6000828210156200033f5763b95aa35560e01b600052601160045260246000fd5b500390565b6106b480620003546000396000f3fe60806040526004361061004e5760003560e01c8063207fa8b914610065578063667615ba14610078578063d5696bb114610098578063e8a8c894146100c9578063f1522800146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b61005b6100733660046105a4565b610118565b34801561008457600080fd5b5061005b610093366004610627565b6101bf565b3480156100a457600080fd5b506100ad6102c1565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e4366004610627565b6102fc565b3480156100f557600080fd5b506100ad610326565b610106610357565b6101166101116103f2565b610427565b565b61012061044b565b6001600160a01b0316336001600160a01b031614156101b25761014283610479565b6000836001600160a01b0316838360405161015e929190610649565b600060405180830381855af49150503d8060008114610199576040519150601f19603f3d011682016040523d82523d6000602084013e61019e565b606091505b50509050806101ac57600080fd5b50505050565b6101ba6100fe565b505050565b6101c761044b565b6001600160a01b0316336001600160a01b031614156102b9576001600160a01b03811661026257604051636381e58960e11b815260206004820152603a60248201527f5472616e73706172656e745570677261646561626c6550726f78793a206e657760448201527f2061646d696e20697320746865207a65726f206164647265737300000000000060648201526084015b60405180910390fd5b7f7fff140a2090a44f84000f793b3e2c26fd84de1b51418e5734481ecebf9fa41961028b61044b565b604080516001600160a01b03928316815291841660208301520160405180910390a16102b6816104b9565b50565b6102b66100fe565b60006102cb61044b565b6001600160a01b0316336001600160a01b031614156102f1576102ec6103f2565b905090565b6102f96100fe565b90565b61030461044b565b6001600160a01b0316336001600160a01b031614156102b9576102b681610479565b600061033061044b565b6001600160a01b0316336001600160a01b031614156102f1576102ec61044b565b3b151590565b61035f61044b565b6001600160a01b0316336001600160a01b0316141561011657604051636381e58960e11b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a401610259565b60008061042060017fc491a4bc7f22df3d1fef738d9a3c4c3d72de30f6f5b4b051104051df906485f7610659565b5492915050565b3660008037600080366000845af43d6000803e808015610446573d6000f35b3d6000fd5b60008061042060017f1739bb05de6bfb1e46d9ecd038d53871bf808b66c6cb0c157e00eb42c2717ebb610659565b610482816104ed565b6040516001600160a01b038216907f35c786da035a401a18e1a5dade4bdb4c07d82bdd5c15bef8561dbf76ad4db25d90600090a250565b60006104e660017f1739bb05de6bfb1e46d9ecd038d53871bf808b66c6cb0c157e00eb42c2717ebb610659565b9190915550565b803b61055b57604051636381e58960e11b815260206004820152603660248201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e74616044820152751d1a5bdb881a5cc81b9bdd08184818dbdb9d1c9858dd60521b6064820152608401610259565b60006104e660017fc491a4bc7f22df3d1fef738d9a3c4c3d72de30f6f5b4b051104051df906485f7610659565b80356001600160a01b038116811461059f57600080fd5b919050565b6000806000604084860312156105b957600080fd5b6105c284610588565b9250602084013567ffffffffffffffff808211156105df57600080fd5b818601915086601f8301126105f357600080fd5b81358181111561060257600080fd5b87602082850101111561061457600080fd5b6020830194508093505050509250925092565b60006020828403121561063957600080fd5b61064282610588565b9392505050565b8183823760009101908152919050565b6000828210156106795763b95aa35560e01b600052601160045260246000fd5b50039056fea2646970667358221220884bc9cfaa648afd459182fc757138c9f04d80934633cb9aad43098a7856cbd564736f6c634300080b0033"}; + + public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY); + + public static final String[] ABI_ARRAY = {"[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_adm\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]"}; + + public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY); + + public static final String FUNC_ADMIN = "admin"; + + public static final String FUNC_CHANGEADMIN = "changeAdmin"; + + public static final String FUNC_IMPLEMENTATION = "implementation"; + + public static final String FUNC_UPGRADETO = "upgradeTo"; + + public static final String FUNC_UPGRADETOANDCALL = "upgradeToAndCall"; + + public static final Event ADMINCHANGED_EVENT = new Event("AdminChanged", + Arrays.>asList(new TypeReference
() {}, new TypeReference
() {})); + ; + + public static final Event UPGRADED_EVENT = new Event("Upgraded", + Arrays.>asList(new TypeReference
(true) {})); + ; + + protected TransparentUpgradeableProxy(String contractAddress, Client client, + CryptoKeyPair credential) { + super(getBinary(client.getCryptoSuite()), contractAddress, client, credential); + } + + public static String getBinary(CryptoSuite cryptoSuite) { + return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY); + } + + public static String getABI() { + return ABI; + } + + public List getAdminChangedEvents( + TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(ADMINCHANGED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + AdminChangedEventResponse typedResponse = new AdminChangedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.previousAdmin = (String) eventValues.getNonIndexedValues().get(0).getValue(); + typedResponse.newAdmin = (String) eventValues.getNonIndexedValues().get(1).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public List getUpgradedEvents(TransactionReceipt transactionReceipt) { + List valueList = extractEventParametersWithLog(UPGRADED_EVENT, transactionReceipt); + ArrayList responses = new ArrayList(valueList.size()); + for (Contract.EventValuesWithLog eventValues : valueList) { + UpgradedEventResponse typedResponse = new UpgradedEventResponse(); + typedResponse.log = eventValues.getLog(); + typedResponse.implementation = (String) eventValues.getIndexedValues().get(0).getValue(); + responses.add(typedResponse); + } + return responses; + } + + public TransactionReceipt admin() { + final Function function = new Function( + FUNC_ADMIN, + Arrays.asList(), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String admin(TransactionCallback callback) { + final Function function = new Function( + FUNC_ADMIN, + Arrays.asList(), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForAdmin() { + final Function function = new Function( + FUNC_ADMIN, + Arrays.asList(), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple1 getAdminOutput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getOutput(); + final Function function = new Function(FUNC_ADMIN, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public TransactionReceipt changeAdmin(String newAdmin) { + final Function function = new Function( + FUNC_CHANGEADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newAdmin)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String changeAdmin(String newAdmin, TransactionCallback callback) { + final Function function = new Function( + FUNC_CHANGEADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newAdmin)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForChangeAdmin(String newAdmin) { + final Function function = new Function( + FUNC_CHANGEADMIN, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newAdmin)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple1 getChangeAdminInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_CHANGEADMIN, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public TransactionReceipt implementation() { + final Function function = new Function( + FUNC_IMPLEMENTATION, + Arrays.asList(), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String implementation(TransactionCallback callback) { + final Function function = new Function( + FUNC_IMPLEMENTATION, + Arrays.asList(), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForImplementation() { + final Function function = new Function( + FUNC_IMPLEMENTATION, + Arrays.asList(), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple1 getImplementationOutput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getOutput(); + final Function function = new Function(FUNC_IMPLEMENTATION, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public TransactionReceipt upgradeTo(String newImplementation) { + final Function function = new Function( + FUNC_UPGRADETO, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newImplementation)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String upgradeTo(String newImplementation, TransactionCallback callback) { + final Function function = new Function( + FUNC_UPGRADETO, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newImplementation)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForUpgradeTo(String newImplementation) { + final Function function = new Function( + FUNC_UPGRADETO, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newImplementation)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple1 getUpgradeToInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_UPGRADETO, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple1( + + (String) results.get(0).getValue() + ); + } + + public TransactionReceipt upgradeToAndCall(String newImplementation, byte[] data) { + final Function function = new Function( + FUNC_UPGRADETOANDCALL, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newImplementation), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(data)), + Collections.>emptyList(), 0); + return executeTransaction(function); + } + + public String upgradeToAndCall(String newImplementation, byte[] data, + TransactionCallback callback) { + final Function function = new Function( + FUNC_UPGRADETOANDCALL, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newImplementation), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(data)), + Collections.>emptyList(), 0); + return asyncExecuteTransaction(function, callback); + } + + public String getSignedTransactionForUpgradeToAndCall(String newImplementation, byte[] data) { + final Function function = new Function( + FUNC_UPGRADETOANDCALL, + Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(newImplementation), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(data)), + Collections.>emptyList(), 0); + return createSignedTransaction(function); + } + + public Tuple2 getUpgradeToAndCallInput(TransactionReceipt transactionReceipt) { + String data = transactionReceipt.getInput().substring(10); + final Function function = new Function(FUNC_UPGRADETOANDCALL, + Arrays.asList(), + Arrays.>asList(new TypeReference
() {}, new TypeReference() {})); + List results = this.functionReturnDecoder.decode(data, function.getOutputParameters()); + return new Tuple2( + + (String) results.get(0).getValue(), + (byte[]) results.get(1).getValue() + ); + } + + public static TransparentUpgradeableProxy load(String contractAddress, Client client, + CryptoKeyPair credential) { + return new TransparentUpgradeableProxy(contractAddress, client, credential); + } + + public static TransparentUpgradeableProxy deploy(Client client, CryptoKeyPair credential, + String _logic, String _adm, byte[] _data) throws ContractException { + byte[] encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Address(_logic), + new org.fisco.bcos.sdk.v3.codec.datatypes.Address(_adm), + new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes(_data))); + return deploy(TransparentUpgradeableProxy.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), encodedConstructor, null); + } + + public static class AdminChangedEventResponse { + public TransactionReceipt.Logs log; + + public String previousAdmin; + + public String newAdmin; + } + + public static class UpgradedEventResponse { + public TransactionReceipt.Logs log; + + public String implementation; + } +}