Commit 898137e5 authored by 贾浩@五瓣科技's avatar 贾浩@五瓣科技

update

parent 92b7a726
...@@ -21,6 +21,7 @@ type ChainConfig struct { ...@@ -21,6 +21,7 @@ type ChainConfig struct {
GasSenderPrivateKey string `toml:"gas_sender_private_key"` GasSenderPrivateKey string `toml:"gas_sender_private_key"`
ExecutorPrivateKey string `toml:"executor_private_key"` ExecutorPrivateKey string `toml:"executor_private_key"`
ModelPrice int `toml:"model_price"` ModelPrice int `toml:"model_price"`
AppPointContract string `toml:"app_point_contract"`
} }
type PGSQLConfig struct { type PGSQLConfig struct {
......
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
"type": "uint256" "type": "uint256"
}, },
{ {
"indexed": true, "indexed": false,
"internalType": "string", "internalType": "string",
"name": "userId", "name": "userId",
"type": "string" "type": "string"
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
"type": "uint256" "type": "uint256"
}, },
{ {
"indexed": true, "indexed": false,
"internalType": "string", "internalType": "string",
"name": "userId", "name": "userId",
"type": "string" "type": "string"
......
...@@ -31,7 +31,7 @@ var ( ...@@ -31,7 +31,7 @@ var (
// AonUserMetaData contains all meta data concerning the AonUser contract. // AonUserMetaData contains all meta data concerning the AonUser contract.
var AonUserMetaData = &bind.MetaData{ var AonUserMetaData = &bind.MetaData{
ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"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\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"userId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"loginTime\",\"type\":\"uint256\"}],\"name\":\"Login\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"userId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"userInviter\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"userName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"registerTime\",\"type\":\"uint256\"}],\"name\":\"Register\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_userId\",\"type\":\"string\"}],\"name\":\"getBalances\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"_symbols\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"_names\",\"type\":\"string[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_balances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOwnedUsers\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"_userIds\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"_userNames\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_user\",\"type\":\"string\"}],\"name\":\"getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":\"string\",\"name\":\"_userId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_inviter\",\"type\":\"string\"}],\"name\":\"login\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_userId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_inviter\",\"type\":\"string\"}],\"name\":\"loginByServer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_user\",\"type\":\"string\"}],\"name\":\"userIdToTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_user\",\"type\":\"uint256\"}],\"name\":\"userInviter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"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\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"userId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"loginTime\",\"type\":\"uint256\"}],\"name\":\"Login\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"userId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"userInviter\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"userName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"registerTime\",\"type\":\"uint256\"}],\"name\":\"Register\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_userId\",\"type\":\"string\"}],\"name\":\"getBalances\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"_symbols\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"_names\",\"type\":\"string[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_balances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOwnedUsers\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"_userIds\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"_userNames\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_user\",\"type\":\"string\"}],\"name\":\"getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":\"string\",\"name\":\"_userId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_inviter\",\"type\":\"string\"}],\"name\":\"login\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_userId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_inviter\",\"type\":\"string\"}],\"name\":\"loginByServer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_user\",\"type\":\"string\"}],\"name\":\"userIdToTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_user\",\"type\":\"uint256\"}],\"name\":\"userInviter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]",
} }
// AonUserABI is the input ABI used to generate the binding from. // AonUserABI is the input ABI used to generate the binding from.
...@@ -1150,15 +1150,15 @@ func (it *AonUserLoginIterator) Close() error { ...@@ -1150,15 +1150,15 @@ func (it *AonUserLoginIterator) Close() error {
type AonUserLogin struct { type AonUserLogin struct {
Addr common.Address Addr common.Address
TokenId *big.Int TokenId *big.Int
UserId common.Hash UserId string
LoginTime *big.Int LoginTime *big.Int
Raw types.Log // Blockchain specific contextual infos Raw types.Log // Blockchain specific contextual infos
} }
// FilterLogin is a free log retrieval operation binding the contract event 0x73a80bd7c53c518474cf6f5cf50c31f68267a3bba9884c5f7f60e3cc7a2b1f50. // FilterLogin is a free log retrieval operation binding the contract event 0x73a80bd7c53c518474cf6f5cf50c31f68267a3bba9884c5f7f60e3cc7a2b1f50.
// //
// Solidity: event Login(address indexed addr, uint256 indexed tokenId, string indexed userId, uint256 loginTime) // Solidity: event Login(address indexed addr, uint256 indexed tokenId, string userId, uint256 loginTime)
func (_AonUser *AonUserFilterer) FilterLogin(opts *bind.FilterOpts, addr []common.Address, tokenId []*big.Int, userId []string) (*AonUserLoginIterator, error) { func (_AonUser *AonUserFilterer) FilterLogin(opts *bind.FilterOpts, addr []common.Address, tokenId []*big.Int) (*AonUserLoginIterator, error) {
var addrRule []interface{} var addrRule []interface{}
for _, addrItem := range addr { for _, addrItem := range addr {
...@@ -1168,12 +1168,8 @@ func (_AonUser *AonUserFilterer) FilterLogin(opts *bind.FilterOpts, addr []commo ...@@ -1168,12 +1168,8 @@ func (_AonUser *AonUserFilterer) FilterLogin(opts *bind.FilterOpts, addr []commo
for _, tokenIdItem := range tokenId { for _, tokenIdItem := range tokenId {
tokenIdRule = append(tokenIdRule, tokenIdItem) tokenIdRule = append(tokenIdRule, tokenIdItem)
} }
var userIdRule []interface{}
for _, userIdItem := range userId {
userIdRule = append(userIdRule, userIdItem)
}
logs, sub, err := _AonUser.contract.FilterLogs(opts, "Login", addrRule, tokenIdRule, userIdRule) logs, sub, err := _AonUser.contract.FilterLogs(opts, "Login", addrRule, tokenIdRule)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -1182,8 +1178,8 @@ func (_AonUser *AonUserFilterer) FilterLogin(opts *bind.FilterOpts, addr []commo ...@@ -1182,8 +1178,8 @@ func (_AonUser *AonUserFilterer) FilterLogin(opts *bind.FilterOpts, addr []commo
// WatchLogin is a free log subscription operation binding the contract event 0x73a80bd7c53c518474cf6f5cf50c31f68267a3bba9884c5f7f60e3cc7a2b1f50. // WatchLogin is a free log subscription operation binding the contract event 0x73a80bd7c53c518474cf6f5cf50c31f68267a3bba9884c5f7f60e3cc7a2b1f50.
// //
// Solidity: event Login(address indexed addr, uint256 indexed tokenId, string indexed userId, uint256 loginTime) // Solidity: event Login(address indexed addr, uint256 indexed tokenId, string userId, uint256 loginTime)
func (_AonUser *AonUserFilterer) WatchLogin(opts *bind.WatchOpts, sink chan<- *AonUserLogin, addr []common.Address, tokenId []*big.Int, userId []string) (event.Subscription, error) { func (_AonUser *AonUserFilterer) WatchLogin(opts *bind.WatchOpts, sink chan<- *AonUserLogin, addr []common.Address, tokenId []*big.Int) (event.Subscription, error) {
var addrRule []interface{} var addrRule []interface{}
for _, addrItem := range addr { for _, addrItem := range addr {
...@@ -1193,12 +1189,8 @@ func (_AonUser *AonUserFilterer) WatchLogin(opts *bind.WatchOpts, sink chan<- *A ...@@ -1193,12 +1189,8 @@ func (_AonUser *AonUserFilterer) WatchLogin(opts *bind.WatchOpts, sink chan<- *A
for _, tokenIdItem := range tokenId { for _, tokenIdItem := range tokenId {
tokenIdRule = append(tokenIdRule, tokenIdItem) tokenIdRule = append(tokenIdRule, tokenIdItem)
} }
var userIdRule []interface{}
for _, userIdItem := range userId {
userIdRule = append(userIdRule, userIdItem)
}
logs, sub, err := _AonUser.contract.WatchLogs(opts, "Login", addrRule, tokenIdRule, userIdRule) logs, sub, err := _AonUser.contract.WatchLogs(opts, "Login", addrRule, tokenIdRule)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -1232,7 +1224,7 @@ func (_AonUser *AonUserFilterer) WatchLogin(opts *bind.WatchOpts, sink chan<- *A ...@@ -1232,7 +1224,7 @@ func (_AonUser *AonUserFilterer) WatchLogin(opts *bind.WatchOpts, sink chan<- *A
// ParseLogin is a log parse operation binding the contract event 0x73a80bd7c53c518474cf6f5cf50c31f68267a3bba9884c5f7f60e3cc7a2b1f50. // ParseLogin is a log parse operation binding the contract event 0x73a80bd7c53c518474cf6f5cf50c31f68267a3bba9884c5f7f60e3cc7a2b1f50.
// //
// Solidity: event Login(address indexed addr, uint256 indexed tokenId, string indexed userId, uint256 loginTime) // Solidity: event Login(address indexed addr, uint256 indexed tokenId, string userId, uint256 loginTime)
func (_AonUser *AonUserFilterer) ParseLogin(log types.Log) (*AonUserLogin, error) { func (_AonUser *AonUserFilterer) ParseLogin(log types.Log) (*AonUserLogin, error) {
event := new(AonUserLogin) event := new(AonUserLogin)
if err := _AonUser.contract.UnpackLog(event, "Login", log); err != nil { if err := _AonUser.contract.UnpackLog(event, "Login", log); err != nil {
...@@ -1313,7 +1305,7 @@ func (it *AonUserRegisterIterator) Close() error { ...@@ -1313,7 +1305,7 @@ func (it *AonUserRegisterIterator) Close() error {
type AonUserRegister struct { type AonUserRegister struct {
Addr common.Address Addr common.Address
TokenId *big.Int TokenId *big.Int
UserId common.Hash UserId string
UserInviter string UserInviter string
UserName string UserName string
RegisterTime *big.Int RegisterTime *big.Int
...@@ -1322,8 +1314,8 @@ type AonUserRegister struct { ...@@ -1322,8 +1314,8 @@ type AonUserRegister struct {
// FilterRegister is a free log retrieval operation binding the contract event 0x727986d2de20ed8f3e566563f137987e1ee5b6ffe929b8f9c05e3fe4216f1db8. // FilterRegister is a free log retrieval operation binding the contract event 0x727986d2de20ed8f3e566563f137987e1ee5b6ffe929b8f9c05e3fe4216f1db8.
// //
// Solidity: event Register(address indexed addr, uint256 indexed tokenId, string indexed userId, string userInviter, string userName, uint256 registerTime) // Solidity: event Register(address indexed addr, uint256 indexed tokenId, string userId, string userInviter, string userName, uint256 registerTime)
func (_AonUser *AonUserFilterer) FilterRegister(opts *bind.FilterOpts, addr []common.Address, tokenId []*big.Int, userId []string) (*AonUserRegisterIterator, error) { func (_AonUser *AonUserFilterer) FilterRegister(opts *bind.FilterOpts, addr []common.Address, tokenId []*big.Int) (*AonUserRegisterIterator, error) {
var addrRule []interface{} var addrRule []interface{}
for _, addrItem := range addr { for _, addrItem := range addr {
...@@ -1333,12 +1325,8 @@ func (_AonUser *AonUserFilterer) FilterRegister(opts *bind.FilterOpts, addr []co ...@@ -1333,12 +1325,8 @@ func (_AonUser *AonUserFilterer) FilterRegister(opts *bind.FilterOpts, addr []co
for _, tokenIdItem := range tokenId { for _, tokenIdItem := range tokenId {
tokenIdRule = append(tokenIdRule, tokenIdItem) tokenIdRule = append(tokenIdRule, tokenIdItem)
} }
var userIdRule []interface{}
for _, userIdItem := range userId {
userIdRule = append(userIdRule, userIdItem)
}
logs, sub, err := _AonUser.contract.FilterLogs(opts, "Register", addrRule, tokenIdRule, userIdRule) logs, sub, err := _AonUser.contract.FilterLogs(opts, "Register", addrRule, tokenIdRule)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -1347,8 +1335,8 @@ func (_AonUser *AonUserFilterer) FilterRegister(opts *bind.FilterOpts, addr []co ...@@ -1347,8 +1335,8 @@ func (_AonUser *AonUserFilterer) FilterRegister(opts *bind.FilterOpts, addr []co
// WatchRegister is a free log subscription operation binding the contract event 0x727986d2de20ed8f3e566563f137987e1ee5b6ffe929b8f9c05e3fe4216f1db8. // WatchRegister is a free log subscription operation binding the contract event 0x727986d2de20ed8f3e566563f137987e1ee5b6ffe929b8f9c05e3fe4216f1db8.
// //
// Solidity: event Register(address indexed addr, uint256 indexed tokenId, string indexed userId, string userInviter, string userName, uint256 registerTime) // Solidity: event Register(address indexed addr, uint256 indexed tokenId, string userId, string userInviter, string userName, uint256 registerTime)
func (_AonUser *AonUserFilterer) WatchRegister(opts *bind.WatchOpts, sink chan<- *AonUserRegister, addr []common.Address, tokenId []*big.Int, userId []string) (event.Subscription, error) { func (_AonUser *AonUserFilterer) WatchRegister(opts *bind.WatchOpts, sink chan<- *AonUserRegister, addr []common.Address, tokenId []*big.Int) (event.Subscription, error) {
var addrRule []interface{} var addrRule []interface{}
for _, addrItem := range addr { for _, addrItem := range addr {
...@@ -1358,12 +1346,8 @@ func (_AonUser *AonUserFilterer) WatchRegister(opts *bind.WatchOpts, sink chan<- ...@@ -1358,12 +1346,8 @@ func (_AonUser *AonUserFilterer) WatchRegister(opts *bind.WatchOpts, sink chan<-
for _, tokenIdItem := range tokenId { for _, tokenIdItem := range tokenId {
tokenIdRule = append(tokenIdRule, tokenIdItem) tokenIdRule = append(tokenIdRule, tokenIdItem)
} }
var userIdRule []interface{}
for _, userIdItem := range userId {
userIdRule = append(userIdRule, userIdItem)
}
logs, sub, err := _AonUser.contract.WatchLogs(opts, "Register", addrRule, tokenIdRule, userIdRule) logs, sub, err := _AonUser.contract.WatchLogs(opts, "Register", addrRule, tokenIdRule)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -1397,7 +1381,7 @@ func (_AonUser *AonUserFilterer) WatchRegister(opts *bind.WatchOpts, sink chan<- ...@@ -1397,7 +1381,7 @@ func (_AonUser *AonUserFilterer) WatchRegister(opts *bind.WatchOpts, sink chan<-
// ParseRegister is a log parse operation binding the contract event 0x727986d2de20ed8f3e566563f137987e1ee5b6ffe929b8f9c05e3fe4216f1db8. // ParseRegister is a log parse operation binding the contract event 0x727986d2de20ed8f3e566563f137987e1ee5b6ffe929b8f9c05e3fe4216f1db8.
// //
// Solidity: event Register(address indexed addr, uint256 indexed tokenId, string indexed userId, string userInviter, string userName, uint256 registerTime) // Solidity: event Register(address indexed addr, uint256 indexed tokenId, string userId, string userInviter, string userName, uint256 registerTime)
func (_AonUser *AonUserFilterer) ParseRegister(log types.Log) (*AonUserRegister, error) { func (_AonUser *AonUserFilterer) ParseRegister(log types.Log) (*AonUserRegister, error) {
event := new(AonUserRegister) event := new(AonUserRegister)
if err := _AonUser.contract.UnpackLog(event, "Register", log); err != nil { if err := _AonUser.contract.UnpackLog(event, "Register", log); err != nil {
......
[
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"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": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_minter",
"type": "address"
}
],
"name": "addMiner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_minters",
"type": "address[]"
}
],
"name": "addMiners",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_minter",
"type": "address"
}
],
"name": "isMinter",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_minter",
"type": "address"
}
],
"name": "removeMiner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_minters",
"type": "address[]"
}
],
"name": "removeMiners",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
\ No newline at end of file
// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.
package erc20
import (
"errors"
"math/big"
"strings"
ethereum "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/event"
)
// Reference imports to suppress errors if they are not otherwise used.
var (
_ = errors.New
_ = big.NewInt
_ = strings.NewReader
_ = ethereum.NotFound
_ = bind.Bind
_ = common.Big1
_ = types.BloomLookup
_ = event.NewSubscription
_ = abi.ConvertType
)
// Erc20MetaData contains all meta data concerning the Erc20 contract.
var Erc20MetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"}],\"name\":\"addMiner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_minters\",\"type\":\"address[]\"}],\"name\":\"addMiners\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"}],\"name\":\"removeMiner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_minters\",\"type\":\"address[]\"}],\"name\":\"removeMiners\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
}
// Erc20ABI is the input ABI used to generate the binding from.
// Deprecated: Use Erc20MetaData.ABI instead.
var Erc20ABI = Erc20MetaData.ABI
// Erc20 is an auto generated Go binding around an Ethereum contract.
type Erc20 struct {
Erc20Caller // Read-only binding to the contract
Erc20Transactor // Write-only binding to the contract
Erc20Filterer // Log filterer for contract events
}
// Erc20Caller is an auto generated read-only Go binding around an Ethereum contract.
type Erc20Caller struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// Erc20Transactor is an auto generated write-only Go binding around an Ethereum contract.
type Erc20Transactor struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// Erc20Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
type Erc20Filterer struct {
contract *bind.BoundContract // Generic contract wrapper for the low level calls
}
// Erc20Session is an auto generated Go binding around an Ethereum contract,
// with pre-set call and transact options.
type Erc20Session struct {
Contract *Erc20 // Generic contract binding to set the session for
CallOpts bind.CallOpts // Call options to use throughout this session
TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}
// Erc20CallerSession is an auto generated read-only Go binding around an Ethereum contract,
// with pre-set call options.
type Erc20CallerSession struct {
Contract *Erc20Caller // Generic contract caller binding to set the session for
CallOpts bind.CallOpts // Call options to use throughout this session
}
// Erc20TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
// with pre-set transact options.
type Erc20TransactorSession struct {
Contract *Erc20Transactor // Generic contract transactor binding to set the session for
TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}
// Erc20Raw is an auto generated low-level Go binding around an Ethereum contract.
type Erc20Raw struct {
Contract *Erc20 // Generic contract binding to access the raw methods on
}
// Erc20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
type Erc20CallerRaw struct {
Contract *Erc20Caller // Generic read-only contract binding to access the raw methods on
}
// Erc20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
type Erc20TransactorRaw struct {
Contract *Erc20Transactor // Generic write-only contract binding to access the raw methods on
}
// NewErc20 creates a new instance of Erc20, bound to a specific deployed contract.
func NewErc20(address common.Address, backend bind.ContractBackend) (*Erc20, error) {
contract, err := bindErc20(address, backend, backend, backend)
if err != nil {
return nil, err
}
return &Erc20{Erc20Caller: Erc20Caller{contract: contract}, Erc20Transactor: Erc20Transactor{contract: contract}, Erc20Filterer: Erc20Filterer{contract: contract}}, nil
}
// NewErc20Caller creates a new read-only instance of Erc20, bound to a specific deployed contract.
func NewErc20Caller(address common.Address, caller bind.ContractCaller) (*Erc20Caller, error) {
contract, err := bindErc20(address, caller, nil, nil)
if err != nil {
return nil, err
}
return &Erc20Caller{contract: contract}, nil
}
// NewErc20Transactor creates a new write-only instance of Erc20, bound to a specific deployed contract.
func NewErc20Transactor(address common.Address, transactor bind.ContractTransactor) (*Erc20Transactor, error) {
contract, err := bindErc20(address, nil, transactor, nil)
if err != nil {
return nil, err
}
return &Erc20Transactor{contract: contract}, nil
}
// NewErc20Filterer creates a new log filterer instance of Erc20, bound to a specific deployed contract.
func NewErc20Filterer(address common.Address, filterer bind.ContractFilterer) (*Erc20Filterer, error) {
contract, err := bindErc20(address, nil, nil, filterer)
if err != nil {
return nil, err
}
return &Erc20Filterer{contract: contract}, nil
}
// bindErc20 binds a generic wrapper to an already deployed contract.
func bindErc20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
parsed, err := Erc20MetaData.GetAbi()
if err != nil {
return nil, err
}
return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
}
// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (_Erc20 *Erc20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
return _Erc20.Contract.Erc20Caller.contract.Call(opts, result, method, params...)
}
// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (_Erc20 *Erc20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
return _Erc20.Contract.Erc20Transactor.contract.Transfer(opts)
}
// Transact invokes the (paid) contract method with params as input values.
func (_Erc20 *Erc20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
return _Erc20.Contract.Erc20Transactor.contract.Transact(opts, method, params...)
}
// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (_Erc20 *Erc20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
return _Erc20.Contract.contract.Call(opts, result, method, params...)
}
// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (_Erc20 *Erc20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
return _Erc20.Contract.contract.Transfer(opts)
}
// Transact invokes the (paid) contract method with params as input values.
func (_Erc20 *Erc20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
return _Erc20.Contract.contract.Transact(opts, method, params...)
}
// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
//
// Solidity: function allowance(address owner, address spender) view returns(uint256)
func (_Erc20 *Erc20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
var out []interface{}
err := _Erc20.contract.Call(opts, &out, "allowance", owner, spender)
if err != nil {
return *new(*big.Int), err
}
out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
return out0, err
}
// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
//
// Solidity: function allowance(address owner, address spender) view returns(uint256)
func (_Erc20 *Erc20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
return _Erc20.Contract.Allowance(&_Erc20.CallOpts, owner, spender)
}
// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
//
// Solidity: function allowance(address owner, address spender) view returns(uint256)
func (_Erc20 *Erc20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
return _Erc20.Contract.Allowance(&_Erc20.CallOpts, owner, spender)
}
// BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
//
// Solidity: function balanceOf(address account) view returns(uint256)
func (_Erc20 *Erc20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
var out []interface{}
err := _Erc20.contract.Call(opts, &out, "balanceOf", account)
if err != nil {
return *new(*big.Int), err
}
out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
return out0, err
}
// BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
//
// Solidity: function balanceOf(address account) view returns(uint256)
func (_Erc20 *Erc20Session) BalanceOf(account common.Address) (*big.Int, error) {
return _Erc20.Contract.BalanceOf(&_Erc20.CallOpts, account)
}
// BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
//
// Solidity: function balanceOf(address account) view returns(uint256)
func (_Erc20 *Erc20CallerSession) BalanceOf(account common.Address) (*big.Int, error) {
return _Erc20.Contract.BalanceOf(&_Erc20.CallOpts, account)
}
// Decimals is a free data retrieval call binding the contract method 0x313ce567.
//
// Solidity: function decimals() view returns(uint8)
func (_Erc20 *Erc20Caller) Decimals(opts *bind.CallOpts) (uint8, error) {
var out []interface{}
err := _Erc20.contract.Call(opts, &out, "decimals")
if err != nil {
return *new(uint8), err
}
out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
return out0, err
}
// Decimals is a free data retrieval call binding the contract method 0x313ce567.
//
// Solidity: function decimals() view returns(uint8)
func (_Erc20 *Erc20Session) Decimals() (uint8, error) {
return _Erc20.Contract.Decimals(&_Erc20.CallOpts)
}
// Decimals is a free data retrieval call binding the contract method 0x313ce567.
//
// Solidity: function decimals() view returns(uint8)
func (_Erc20 *Erc20CallerSession) Decimals() (uint8, error) {
return _Erc20.Contract.Decimals(&_Erc20.CallOpts)
}
// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
//
// Solidity: function isMinter(address _minter) view returns(bool)
func (_Erc20 *Erc20Caller) IsMinter(opts *bind.CallOpts, _minter common.Address) (bool, error) {
var out []interface{}
err := _Erc20.contract.Call(opts, &out, "isMinter", _minter)
if err != nil {
return *new(bool), err
}
out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
return out0, err
}
// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
//
// Solidity: function isMinter(address _minter) view returns(bool)
func (_Erc20 *Erc20Session) IsMinter(_minter common.Address) (bool, error) {
return _Erc20.Contract.IsMinter(&_Erc20.CallOpts, _minter)
}
// IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
//
// Solidity: function isMinter(address _minter) view returns(bool)
func (_Erc20 *Erc20CallerSession) IsMinter(_minter common.Address) (bool, error) {
return _Erc20.Contract.IsMinter(&_Erc20.CallOpts, _minter)
}
// MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01.
//
// Solidity: function maxSupply() pure returns(uint256)
func (_Erc20 *Erc20Caller) MaxSupply(opts *bind.CallOpts) (*big.Int, error) {
var out []interface{}
err := _Erc20.contract.Call(opts, &out, "maxSupply")
if err != nil {
return *new(*big.Int), err
}
out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
return out0, err
}
// MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01.
//
// Solidity: function maxSupply() pure returns(uint256)
func (_Erc20 *Erc20Session) MaxSupply() (*big.Int, error) {
return _Erc20.Contract.MaxSupply(&_Erc20.CallOpts)
}
// MaxSupply is a free data retrieval call binding the contract method 0xd5abeb01.
//
// Solidity: function maxSupply() pure returns(uint256)
func (_Erc20 *Erc20CallerSession) MaxSupply() (*big.Int, error) {
return _Erc20.Contract.MaxSupply(&_Erc20.CallOpts)
}
// Name is a free data retrieval call binding the contract method 0x06fdde03.
//
// Solidity: function name() view returns(string)
func (_Erc20 *Erc20Caller) Name(opts *bind.CallOpts) (string, error) {
var out []interface{}
err := _Erc20.contract.Call(opts, &out, "name")
if err != nil {
return *new(string), err
}
out0 := *abi.ConvertType(out[0], new(string)).(*string)
return out0, err
}
// Name is a free data retrieval call binding the contract method 0x06fdde03.
//
// Solidity: function name() view returns(string)
func (_Erc20 *Erc20Session) Name() (string, error) {
return _Erc20.Contract.Name(&_Erc20.CallOpts)
}
// Name is a free data retrieval call binding the contract method 0x06fdde03.
//
// Solidity: function name() view returns(string)
func (_Erc20 *Erc20CallerSession) Name() (string, error) {
return _Erc20.Contract.Name(&_Erc20.CallOpts)
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
//
// Solidity: function owner() view returns(address)
func (_Erc20 *Erc20Caller) Owner(opts *bind.CallOpts) (common.Address, error) {
var out []interface{}
err := _Erc20.contract.Call(opts, &out, "owner")
if err != nil {
return *new(common.Address), err
}
out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
return out0, err
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
//
// Solidity: function owner() view returns(address)
func (_Erc20 *Erc20Session) Owner() (common.Address, error) {
return _Erc20.Contract.Owner(&_Erc20.CallOpts)
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
//
// Solidity: function owner() view returns(address)
func (_Erc20 *Erc20CallerSession) Owner() (common.Address, error) {
return _Erc20.Contract.Owner(&_Erc20.CallOpts)
}
// Symbol is a free data retrieval call binding the contract method 0x95d89b41.
//
// Solidity: function symbol() view returns(string)
func (_Erc20 *Erc20Caller) Symbol(opts *bind.CallOpts) (string, error) {
var out []interface{}
err := _Erc20.contract.Call(opts, &out, "symbol")
if err != nil {
return *new(string), err
}
out0 := *abi.ConvertType(out[0], new(string)).(*string)
return out0, err
}
// Symbol is a free data retrieval call binding the contract method 0x95d89b41.
//
// Solidity: function symbol() view returns(string)
func (_Erc20 *Erc20Session) Symbol() (string, error) {
return _Erc20.Contract.Symbol(&_Erc20.CallOpts)
}
// Symbol is a free data retrieval call binding the contract method 0x95d89b41.
//
// Solidity: function symbol() view returns(string)
func (_Erc20 *Erc20CallerSession) Symbol() (string, error) {
return _Erc20.Contract.Symbol(&_Erc20.CallOpts)
}
// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
//
// Solidity: function totalSupply() view returns(uint256)
func (_Erc20 *Erc20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
var out []interface{}
err := _Erc20.contract.Call(opts, &out, "totalSupply")
if err != nil {
return *new(*big.Int), err
}
out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
return out0, err
}
// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
//
// Solidity: function totalSupply() view returns(uint256)
func (_Erc20 *Erc20Session) TotalSupply() (*big.Int, error) {
return _Erc20.Contract.TotalSupply(&_Erc20.CallOpts)
}
// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
//
// Solidity: function totalSupply() view returns(uint256)
func (_Erc20 *Erc20CallerSession) TotalSupply() (*big.Int, error) {
return _Erc20.Contract.TotalSupply(&_Erc20.CallOpts)
}
// AddMiner is a paid mutator transaction binding the contract method 0xf3982e5e.
//
// Solidity: function addMiner(address _minter) returns()
func (_Erc20 *Erc20Transactor) AddMiner(opts *bind.TransactOpts, _minter common.Address) (*types.Transaction, error) {
return _Erc20.contract.Transact(opts, "addMiner", _minter)
}
// AddMiner is a paid mutator transaction binding the contract method 0xf3982e5e.
//
// Solidity: function addMiner(address _minter) returns()
func (_Erc20 *Erc20Session) AddMiner(_minter common.Address) (*types.Transaction, error) {
return _Erc20.Contract.AddMiner(&_Erc20.TransactOpts, _minter)
}
// AddMiner is a paid mutator transaction binding the contract method 0xf3982e5e.
//
// Solidity: function addMiner(address _minter) returns()
func (_Erc20 *Erc20TransactorSession) AddMiner(_minter common.Address) (*types.Transaction, error) {
return _Erc20.Contract.AddMiner(&_Erc20.TransactOpts, _minter)
}
// AddMiners is a paid mutator transaction binding the contract method 0x7225b865.
//
// Solidity: function addMiners(address[] _minters) returns()
func (_Erc20 *Erc20Transactor) AddMiners(opts *bind.TransactOpts, _minters []common.Address) (*types.Transaction, error) {
return _Erc20.contract.Transact(opts, "addMiners", _minters)
}
// AddMiners is a paid mutator transaction binding the contract method 0x7225b865.
//
// Solidity: function addMiners(address[] _minters) returns()
func (_Erc20 *Erc20Session) AddMiners(_minters []common.Address) (*types.Transaction, error) {
return _Erc20.Contract.AddMiners(&_Erc20.TransactOpts, _minters)
}
// AddMiners is a paid mutator transaction binding the contract method 0x7225b865.
//
// Solidity: function addMiners(address[] _minters) returns()
func (_Erc20 *Erc20TransactorSession) AddMiners(_minters []common.Address) (*types.Transaction, error) {
return _Erc20.Contract.AddMiners(&_Erc20.TransactOpts, _minters)
}
// Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
//
// Solidity: function approve(address spender, uint256 value) returns(bool)
func (_Erc20 *Erc20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
return _Erc20.contract.Transact(opts, "approve", spender, value)
}
// Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
//
// Solidity: function approve(address spender, uint256 value) returns(bool)
func (_Erc20 *Erc20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
return _Erc20.Contract.Approve(&_Erc20.TransactOpts, spender, value)
}
// Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
//
// Solidity: function approve(address spender, uint256 value) returns(bool)
func (_Erc20 *Erc20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
return _Erc20.Contract.Approve(&_Erc20.TransactOpts, spender, value)
}
// Burn is a paid mutator transaction binding the contract method 0x42966c68.
//
// Solidity: function burn(uint256 _amount) returns(bool)
func (_Erc20 *Erc20Transactor) Burn(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) {
return _Erc20.contract.Transact(opts, "burn", _amount)
}
// Burn is a paid mutator transaction binding the contract method 0x42966c68.
//
// Solidity: function burn(uint256 _amount) returns(bool)
func (_Erc20 *Erc20Session) Burn(_amount *big.Int) (*types.Transaction, error) {
return _Erc20.Contract.Burn(&_Erc20.TransactOpts, _amount)
}
// Burn is a paid mutator transaction binding the contract method 0x42966c68.
//
// Solidity: function burn(uint256 _amount) returns(bool)
func (_Erc20 *Erc20TransactorSession) Burn(_amount *big.Int) (*types.Transaction, error) {
return _Erc20.Contract.Burn(&_Erc20.TransactOpts, _amount)
}
// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c.
//
// Solidity: function initialize() returns()
func (_Erc20 *Erc20Transactor) Initialize(opts *bind.TransactOpts) (*types.Transaction, error) {
return _Erc20.contract.Transact(opts, "initialize")
}
// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c.
//
// Solidity: function initialize() returns()
func (_Erc20 *Erc20Session) Initialize() (*types.Transaction, error) {
return _Erc20.Contract.Initialize(&_Erc20.TransactOpts)
}
// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c.
//
// Solidity: function initialize() returns()
func (_Erc20 *Erc20TransactorSession) Initialize() (*types.Transaction, error) {
return _Erc20.Contract.Initialize(&_Erc20.TransactOpts)
}
// Mint is a paid mutator transaction binding the contract method 0x40c10f19.
//
// Solidity: function mint(address _to, uint256 _amount) returns(bool)
func (_Erc20 *Erc20Transactor) Mint(opts *bind.TransactOpts, _to common.Address, _amount *big.Int) (*types.Transaction, error) {
return _Erc20.contract.Transact(opts, "mint", _to, _amount)
}
// Mint is a paid mutator transaction binding the contract method 0x40c10f19.
//
// Solidity: function mint(address _to, uint256 _amount) returns(bool)
func (_Erc20 *Erc20Session) Mint(_to common.Address, _amount *big.Int) (*types.Transaction, error) {
return _Erc20.Contract.Mint(&_Erc20.TransactOpts, _to, _amount)
}
// Mint is a paid mutator transaction binding the contract method 0x40c10f19.
//
// Solidity: function mint(address _to, uint256 _amount) returns(bool)
func (_Erc20 *Erc20TransactorSession) Mint(_to common.Address, _amount *big.Int) (*types.Transaction, error) {
return _Erc20.Contract.Mint(&_Erc20.TransactOpts, _to, _amount)
}
// RemoveMiner is a paid mutator transaction binding the contract method 0x10242590.
//
// Solidity: function removeMiner(address _minter) returns()
func (_Erc20 *Erc20Transactor) RemoveMiner(opts *bind.TransactOpts, _minter common.Address) (*types.Transaction, error) {
return _Erc20.contract.Transact(opts, "removeMiner", _minter)
}
// RemoveMiner is a paid mutator transaction binding the contract method 0x10242590.
//
// Solidity: function removeMiner(address _minter) returns()
func (_Erc20 *Erc20Session) RemoveMiner(_minter common.Address) (*types.Transaction, error) {
return _Erc20.Contract.RemoveMiner(&_Erc20.TransactOpts, _minter)
}
// RemoveMiner is a paid mutator transaction binding the contract method 0x10242590.
//
// Solidity: function removeMiner(address _minter) returns()
func (_Erc20 *Erc20TransactorSession) RemoveMiner(_minter common.Address) (*types.Transaction, error) {
return _Erc20.Contract.RemoveMiner(&_Erc20.TransactOpts, _minter)
}
// RemoveMiners is a paid mutator transaction binding the contract method 0xaad4b6e8.
//
// Solidity: function removeMiners(address[] _minters) returns()
func (_Erc20 *Erc20Transactor) RemoveMiners(opts *bind.TransactOpts, _minters []common.Address) (*types.Transaction, error) {
return _Erc20.contract.Transact(opts, "removeMiners", _minters)
}
// RemoveMiners is a paid mutator transaction binding the contract method 0xaad4b6e8.
//
// Solidity: function removeMiners(address[] _minters) returns()
func (_Erc20 *Erc20Session) RemoveMiners(_minters []common.Address) (*types.Transaction, error) {
return _Erc20.Contract.RemoveMiners(&_Erc20.TransactOpts, _minters)
}
// RemoveMiners is a paid mutator transaction binding the contract method 0xaad4b6e8.
//
// Solidity: function removeMiners(address[] _minters) returns()
func (_Erc20 *Erc20TransactorSession) RemoveMiners(_minters []common.Address) (*types.Transaction, error) {
return _Erc20.Contract.RemoveMiners(&_Erc20.TransactOpts, _minters)
}
// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
//
// Solidity: function renounceOwnership() returns()
func (_Erc20 *Erc20Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
return _Erc20.contract.Transact(opts, "renounceOwnership")
}
// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
//
// Solidity: function renounceOwnership() returns()
func (_Erc20 *Erc20Session) RenounceOwnership() (*types.Transaction, error) {
return _Erc20.Contract.RenounceOwnership(&_Erc20.TransactOpts)
}
// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
//
// Solidity: function renounceOwnership() returns()
func (_Erc20 *Erc20TransactorSession) RenounceOwnership() (*types.Transaction, error) {
return _Erc20.Contract.RenounceOwnership(&_Erc20.TransactOpts)
}
// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
//
// Solidity: function transfer(address to, uint256 value) returns(bool)
func (_Erc20 *Erc20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) {
return _Erc20.contract.Transact(opts, "transfer", to, value)
}
// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
//
// Solidity: function transfer(address to, uint256 value) returns(bool)
func (_Erc20 *Erc20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) {
return _Erc20.Contract.Transfer(&_Erc20.TransactOpts, to, value)
}
// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
//
// Solidity: function transfer(address to, uint256 value) returns(bool)
func (_Erc20 *Erc20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) {
return _Erc20.Contract.Transfer(&_Erc20.TransactOpts, to, value)
}
// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
//
// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool)
func (_Erc20 *Erc20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) {
return _Erc20.contract.Transact(opts, "transferFrom", from, to, value)
}
// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
//
// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool)
func (_Erc20 *Erc20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) {
return _Erc20.Contract.TransferFrom(&_Erc20.TransactOpts, from, to, value)
}
// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
//
// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool)
func (_Erc20 *Erc20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) {
return _Erc20.Contract.TransferFrom(&_Erc20.TransactOpts, from, to, value)
}
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
//
// Solidity: function transferOwnership(address newOwner) returns()
func (_Erc20 *Erc20Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
return _Erc20.contract.Transact(opts, "transferOwnership", newOwner)
}
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
//
// Solidity: function transferOwnership(address newOwner) returns()
func (_Erc20 *Erc20Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
return _Erc20.Contract.TransferOwnership(&_Erc20.TransactOpts, newOwner)
}
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
//
// Solidity: function transferOwnership(address newOwner) returns()
func (_Erc20 *Erc20TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
return _Erc20.Contract.TransferOwnership(&_Erc20.TransactOpts, newOwner)
}
// Erc20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the Erc20 contract.
type Erc20ApprovalIterator struct {
Event *Erc20Approval // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
logs chan types.Log // Log channel receiving the found contract events
sub ethereum.Subscription // Subscription for errors, completion and termination
done bool // Whether the subscription completed delivering logs
fail error // Occurred error to stop iteration
}
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *Erc20ApprovalIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
}
// If the iterator completed, deliver directly whatever's available
if it.done {
select {
case log := <-it.logs:
it.Event = new(Erc20Approval)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
default:
return false
}
}
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
it.Event = new(Erc20Approval)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
case err := <-it.sub.Err():
it.done = true
it.fail = err
return it.Next()
}
}
// Error returns any retrieval or parsing error occurred during filtering.
func (it *Erc20ApprovalIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *Erc20ApprovalIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
// Erc20Approval represents a Approval event raised by the Erc20 contract.
type Erc20Approval struct {
Owner common.Address
Spender common.Address
Value *big.Int
Raw types.Log // Blockchain specific contextual infos
}
// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
//
// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
func (_Erc20 *Erc20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*Erc20ApprovalIterator, error) {
var ownerRule []interface{}
for _, ownerItem := range owner {
ownerRule = append(ownerRule, ownerItem)
}
var spenderRule []interface{}
for _, spenderItem := range spender {
spenderRule = append(spenderRule, spenderItem)
}
logs, sub, err := _Erc20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
if err != nil {
return nil, err
}
return &Erc20ApprovalIterator{contract: _Erc20.contract, event: "Approval", logs: logs, sub: sub}, nil
}
// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
//
// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
func (_Erc20 *Erc20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *Erc20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
var ownerRule []interface{}
for _, ownerItem := range owner {
ownerRule = append(ownerRule, ownerItem)
}
var spenderRule []interface{}
for _, spenderItem := range spender {
spenderRule = append(spenderRule, spenderItem)
}
logs, sub, err := _Erc20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
if err != nil {
return nil, err
}
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
event := new(Erc20Approval)
if err := _Erc20.contract.UnpackLog(event, "Approval", log); err != nil {
return err
}
event.Raw = log
select {
case sink <- event:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
//
// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
func (_Erc20 *Erc20Filterer) ParseApproval(log types.Log) (*Erc20Approval, error) {
event := new(Erc20Approval)
if err := _Erc20.contract.UnpackLog(event, "Approval", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
// Erc20InitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Erc20 contract.
type Erc20InitializedIterator struct {
Event *Erc20Initialized // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
logs chan types.Log // Log channel receiving the found contract events
sub ethereum.Subscription // Subscription for errors, completion and termination
done bool // Whether the subscription completed delivering logs
fail error // Occurred error to stop iteration
}
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *Erc20InitializedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
}
// If the iterator completed, deliver directly whatever's available
if it.done {
select {
case log := <-it.logs:
it.Event = new(Erc20Initialized)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
default:
return false
}
}
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
it.Event = new(Erc20Initialized)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
case err := <-it.sub.Err():
it.done = true
it.fail = err
return it.Next()
}
}
// Error returns any retrieval or parsing error occurred during filtering.
func (it *Erc20InitializedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *Erc20InitializedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
// Erc20Initialized represents a Initialized event raised by the Erc20 contract.
type Erc20Initialized struct {
Version uint64
Raw types.Log // Blockchain specific contextual infos
}
// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2.
//
// Solidity: event Initialized(uint64 version)
func (_Erc20 *Erc20Filterer) FilterInitialized(opts *bind.FilterOpts) (*Erc20InitializedIterator, error) {
logs, sub, err := _Erc20.contract.FilterLogs(opts, "Initialized")
if err != nil {
return nil, err
}
return &Erc20InitializedIterator{contract: _Erc20.contract, event: "Initialized", logs: logs, sub: sub}, nil
}
// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2.
//
// Solidity: event Initialized(uint64 version)
func (_Erc20 *Erc20Filterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *Erc20Initialized) (event.Subscription, error) {
logs, sub, err := _Erc20.contract.WatchLogs(opts, "Initialized")
if err != nil {
return nil, err
}
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
event := new(Erc20Initialized)
if err := _Erc20.contract.UnpackLog(event, "Initialized", log); err != nil {
return err
}
event.Raw = log
select {
case sink <- event:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
// ParseInitialized is a log parse operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2.
//
// Solidity: event Initialized(uint64 version)
func (_Erc20 *Erc20Filterer) ParseInitialized(log types.Log) (*Erc20Initialized, error) {
event := new(Erc20Initialized)
if err := _Erc20.contract.UnpackLog(event, "Initialized", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
// Erc20OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Erc20 contract.
type Erc20OwnershipTransferredIterator struct {
Event *Erc20OwnershipTransferred // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
logs chan types.Log // Log channel receiving the found contract events
sub ethereum.Subscription // Subscription for errors, completion and termination
done bool // Whether the subscription completed delivering logs
fail error // Occurred error to stop iteration
}
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *Erc20OwnershipTransferredIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
}
// If the iterator completed, deliver directly whatever's available
if it.done {
select {
case log := <-it.logs:
it.Event = new(Erc20OwnershipTransferred)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
default:
return false
}
}
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
it.Event = new(Erc20OwnershipTransferred)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
case err := <-it.sub.Err():
it.done = true
it.fail = err
return it.Next()
}
}
// Error returns any retrieval or parsing error occurred during filtering.
func (it *Erc20OwnershipTransferredIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *Erc20OwnershipTransferredIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
// Erc20OwnershipTransferred represents a OwnershipTransferred event raised by the Erc20 contract.
type Erc20OwnershipTransferred struct {
PreviousOwner common.Address
NewOwner common.Address
Raw types.Log // Blockchain specific contextual infos
}
// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
//
// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
func (_Erc20 *Erc20Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*Erc20OwnershipTransferredIterator, error) {
var previousOwnerRule []interface{}
for _, previousOwnerItem := range previousOwner {
previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
}
var newOwnerRule []interface{}
for _, newOwnerItem := range newOwner {
newOwnerRule = append(newOwnerRule, newOwnerItem)
}
logs, sub, err := _Erc20.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
if err != nil {
return nil, err
}
return &Erc20OwnershipTransferredIterator{contract: _Erc20.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
}
// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
//
// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
func (_Erc20 *Erc20Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *Erc20OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
var previousOwnerRule []interface{}
for _, previousOwnerItem := range previousOwner {
previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
}
var newOwnerRule []interface{}
for _, newOwnerItem := range newOwner {
newOwnerRule = append(newOwnerRule, newOwnerItem)
}
logs, sub, err := _Erc20.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
if err != nil {
return nil, err
}
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
event := new(Erc20OwnershipTransferred)
if err := _Erc20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
return err
}
event.Raw = log
select {
case sink <- event:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
//
// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
func (_Erc20 *Erc20Filterer) ParseOwnershipTransferred(log types.Log) (*Erc20OwnershipTransferred, error) {
event := new(Erc20OwnershipTransferred)
if err := _Erc20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
// Erc20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the Erc20 contract.
type Erc20TransferIterator struct {
Event *Erc20Transfer // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
logs chan types.Log // Log channel receiving the found contract events
sub ethereum.Subscription // Subscription for errors, completion and termination
done bool // Whether the subscription completed delivering logs
fail error // Occurred error to stop iteration
}
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
func (it *Erc20TransferIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
}
// If the iterator completed, deliver directly whatever's available
if it.done {
select {
case log := <-it.logs:
it.Event = new(Erc20Transfer)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
default:
return false
}
}
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
it.Event = new(Erc20Transfer)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
}
it.Event.Raw = log
return true
case err := <-it.sub.Err():
it.done = true
it.fail = err
return it.Next()
}
}
// Error returns any retrieval or parsing error occurred during filtering.
func (it *Erc20TransferIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
func (it *Erc20TransferIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
// Erc20Transfer represents a Transfer event raised by the Erc20 contract.
type Erc20Transfer struct {
From common.Address
To common.Address
Value *big.Int
Raw types.Log // Blockchain specific contextual infos
}
// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
//
// Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
func (_Erc20 *Erc20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*Erc20TransferIterator, error) {
var fromRule []interface{}
for _, fromItem := range from {
fromRule = append(fromRule, fromItem)
}
var toRule []interface{}
for _, toItem := range to {
toRule = append(toRule, toItem)
}
logs, sub, err := _Erc20.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
if err != nil {
return nil, err
}
return &Erc20TransferIterator{contract: _Erc20.contract, event: "Transfer", logs: logs, sub: sub}, nil
}
// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
//
// Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
func (_Erc20 *Erc20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *Erc20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) {
var fromRule []interface{}
for _, fromItem := range from {
fromRule = append(fromRule, fromItem)
}
var toRule []interface{}
for _, toItem := range to {
toRule = append(toRule, toItem)
}
logs, sub, err := _Erc20.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
if err != nil {
return nil, err
}
return event.NewSubscription(func(quit <-chan struct{}) error {
defer sub.Unsubscribe()
for {
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
event := new(Erc20Transfer)
if err := _Erc20.contract.UnpackLog(event, "Transfer", log); err != nil {
return err
}
event.Raw = log
select {
case sink <- event:
case err := <-sub.Err():
return err
case <-quit:
return nil
}
case err := <-sub.Err():
return err
case <-quit:
return nil
}
}
}), nil
}
// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
//
// Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
func (_Erc20 *Erc20Filterer) ParseTransfer(log types.Log) (*Erc20Transfer, error) {
event := new(Erc20Transfer)
if err := _Erc20.contract.UnpackLog(event, "Transfer", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
...@@ -3,11 +3,14 @@ package dao ...@@ -3,11 +3,14 @@ package dao
import ( import (
"contract_backend/contract/aon_executor" "contract_backend/contract/aon_executor"
"contract_backend/contract/aon_user" "contract_backend/contract/aon_user"
"contract_backend/contract/erc20"
"crypto/ecdsa" "crypto/ecdsa"
"math/big" "math/big"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
) )
func (d *Dao) Login(privateKey *ecdsa.PrivateKey, userId string, inviter string) (txHash common.Hash, err error) { func (d *Dao) Login(privateKey *ecdsa.PrivateKey, userId string, inviter string) (txHash common.Hash, err error) {
...@@ -21,7 +24,7 @@ func (d *Dao) Login(privateKey *ecdsa.PrivateKey, userId string, inviter string) ...@@ -21,7 +24,7 @@ func (d *Dao) Login(privateKey *ecdsa.PrivateKey, userId string, inviter string)
return common.Hash{}, err return common.Hash{}, err
} }
auth.GasPrice = d.gasPrice auth.GasPrice = d.gasPrice
auth.GasLimit = 800000 auth.GasLimit = 700000
tx, err := instance.Login(auth, userId, inviter) tx, err := instance.Login(auth, userId, inviter)
if err != nil { if err != nil {
return common.Hash{}, err return common.Hash{}, err
...@@ -29,8 +32,38 @@ func (d *Dao) Login(privateKey *ecdsa.PrivateKey, userId string, inviter string) ...@@ -29,8 +32,38 @@ func (d *Dao) Login(privateKey *ecdsa.PrivateKey, userId string, inviter string)
return tx.Hash(), nil return tx.Hash(), nil
} }
func (d *Dao) CheckApprove(privateKey *ecdsa.PrivateKey) (txHash common.Hash, err error) {
instance, err := erc20.NewErc20(common.HexToAddress(d.c.Chain.AppPointContract), d.ethClient)
if err != nil {
return
}
user := crypto.PubkeyToAddress(privateKey.PublicKey)
allowance, err := instance.Allowance(&bind.CallOpts{}, user, common.HexToAddress(d.c.Chain.ExecutorContract))
if err != nil {
return
}
if allowance.Cmp(abi.MaxUint256) == 0 {
return
}
// 执行approve
auth, err := bind.NewKeyedTransactorWithChainID(privateKey, d.chainId)
if err != nil {
return
}
auth.GasPrice = d.gasPrice
auth.GasLimit = 100000
tx, err := instance.Approve(auth, common.HexToAddress(d.c.Chain.ExecutorContract), abi.MaxUint256)
if err != nil {
return
}
return tx.Hash(), nil
}
func (d *Dao) ExecuteTask(privateKey *ecdsa.PrivateKey, executeId, userId, appId string, modelIds []string, price *big.Int) (txHash common.Hash, err error) { func (d *Dao) ExecuteTask(privateKey *ecdsa.PrivateKey, executeId, userId, appId string, modelIds []string, price *big.Int) (txHash common.Hash, err error) {
instance, err := aon_executor.NewAonExecutor(common.HexToAddress(d.c.Chain.UserContract), d.ethClient) instance, err := aon_executor.NewAonExecutor(common.HexToAddress(d.c.Chain.ExecutorContract), d.ethClient)
if err != nil { if err != nil {
return common.Hash{}, err return common.Hash{}, err
} }
...@@ -40,6 +73,10 @@ func (d *Dao) ExecuteTask(privateKey *ecdsa.PrivateKey, executeId, userId, appId ...@@ -40,6 +73,10 @@ func (d *Dao) ExecuteTask(privateKey *ecdsa.PrivateKey, executeId, userId, appId
return common.Hash{}, err return common.Hash{}, err
} }
auth.GasPrice = d.gasPrice auth.GasPrice = d.gasPrice
auth.GasLimit = 1500000
appId = "NYFiNxBEonlwYIrTQ2V8s9ks0I0ZPRoR1UVASanthVMA"
modelIds = []string{"fUIqu5A2igp9nNJaEUMTod4amDFgIXWmHaTZNNbKo58A"}
tx, err := instance.ExecuteByUserId(auth, executeId, userId, appId, modelIds, price) tx, err := instance.ExecuteByUserId(auth, executeId, userId, appId, modelIds, price)
if err != nil { if err != nil {
return common.Hash{}, err return common.Hash{}, err
......
...@@ -3,6 +3,9 @@ package dao ...@@ -3,6 +3,9 @@ package dao
import ( import (
"contract_backend/model" "contract_backend/model"
"encoding/json" "encoding/json"
"gorm.io/gorm"
"gorm.io/gorm/logger"
) )
func (d *Dao) UpdateTask(id string, txHash string, status int) (err error) { func (d *Dao) UpdateTask(id string, txHash string, status int) (err error) {
...@@ -12,7 +15,8 @@ func (d *Dao) UpdateTask(id string, txHash string, status int) (err error) { ...@@ -12,7 +15,8 @@ func (d *Dao) UpdateTask(id string, txHash string, status int) (err error) {
func (d *Dao) GetUnprocessedTasks(limit int) (tasks []*model.ExecTask, err error) { func (d *Dao) GetUnprocessedTasks(limit int) (tasks []*model.ExecTask, err error) {
sql := `SELECT id, user_id, app_key, model_ids, tx_hash, tx_status FROM public.exec_task WHERE tx_hash = '' AND tx_status = 1 LIMIT ?` sql := `SELECT id, user_id, app_key, model_ids, tx_hash, tx_status FROM public.exec_task WHERE tx_hash = '' AND tx_status = 1 LIMIT ?`
err = d.db.Raw(sql, limit).Scan(&tasks).Error tx := d.db.Session(&gorm.Session{Logger: d.db.Logger.LogMode(logger.Error)})
err = tx.Raw(sql, limit).Scan(&tasks).Error
if err != nil { if err != nil {
return return
} }
......
...@@ -5,7 +5,6 @@ import ( ...@@ -5,7 +5,6 @@ import (
"math/big" "math/big"
"time" "time"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/crypto"
...@@ -44,7 +43,7 @@ func (d *Dao) LoopGasPrice() { ...@@ -44,7 +43,7 @@ func (d *Dao) LoopGasPrice() {
// EstimateGasRecharge 估算充值金额 // EstimateGasRecharge 估算充值金额
func (d *Dao) EstimateGasRecharge(address common.Address) (val *big.Int, err error) { func (d *Dao) EstimateGasRecharge(address common.Address) (val *big.Int, err error) {
_10val := new(big.Int).Mul(d.gasPrice, big.NewInt(10*500000)) // 10次 每次50w _10val := new(big.Int).Mul(d.gasPrice, big.NewInt(10*500000)) // 10次 每次50w
_20val := new(big.Int).Mul(d.gasPrice, big.NewInt(20*500000)) // 20次 每次50w _20val := new(big.Int).Mul(d.gasPrice, big.NewInt(50*500000)) // 20次 每次50w
currentBalance, err := d.ethClient.BalanceAt(context.Background(), address, nil) currentBalance, err := d.ethClient.BalanceAt(context.Background(), address, nil)
if err != nil { if err != nil {
...@@ -73,14 +72,6 @@ func (d *Dao) TransferETH(hexPrivateKey string, address common.Address, value *b ...@@ -73,14 +72,6 @@ func (d *Dao) TransferETH(hexPrivateKey string, address common.Address, value *b
GasPrice: d.gasPrice, GasPrice: d.gasPrice,
} }
tx := types.NewTx(&innerTx) tx := types.NewTx(&innerTx)
from := crypto.PubkeyToAddress(privateKey.PublicKey)
gasLimit, err := d.ethClient.EstimateGas(context.Background(), ethereum.CallMsg{
From: from,
To: &address,
Value: value,
})
innerTx.Gas = gasLimit
innerTx.GasPrice = d.gasPrice innerTx.GasPrice = d.gasPrice
signer := types.NewCancunSigner(d.chainId) signer := types.NewCancunSigner(d.chainId)
......
package dao
import (
"context"
"contract_backend/contract/aon_user"
"encoding/base64"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/google/uuid"
)
func TestUID(t *testing.T) {
b, _ := base64.StdEncoding.DecodeString("9jS2xPA3kAyM2F7yvSRi3WwAgDU7sXEPgHEIrR6RhckA")
u, _ := uuid.ParseBytes(b)
t.Log(u.String())
}
func TestLogin(t *testing.T) {
cli, _ := ethclient.Dial("https://opbnb-testnet-rpc.bnbchain.org")
instance, _ := aon_user.NewAonUser(common.HexToAddress("0xb50e74f8903bb72b3bff13c37ccc9114336102d1"), cli)
rec, _ := cli.TransactionReceipt(context.Background(), common.HexToHash("0xac2d1b1db3045665770aa63ea1df4672a333cef3c50788ee5df47e27036de6e4"))
lg, _ := instance.ParseRegister(*rec.Logs[2])
t.Log(lg.UserName)
}
...@@ -49,7 +49,6 @@ func (m *Monitor) Start() { ...@@ -49,7 +49,6 @@ func (m *Monitor) Start() {
for _, task := range tasks { for _, task := range tasks {
m.ProcessOne(task) m.ProcessOne(task)
} }
return
} }
} }
...@@ -63,7 +62,16 @@ func (m *Monitor) ProcessOne(task *model.ExecTask) { ...@@ -63,7 +62,16 @@ func (m *Monitor) ProcessOne(task *model.ExecTask) {
}).Error("update task error") }).Error("update task error")
return return
} }
txHash, err := m.d.ExecuteTask(m.privateKey, task.Id, task.UserId, task.AppKey, task.ModelIdsArray, big.NewInt(int64(m.conf.Chain.ModelPrice))) log.WithFields(log.Fields{
"task_id": task.Id,
"user_id": task.UserId,
"app_key": task.AppKey,
"model_ids": task.ModelIdsArray,
}).Info("execute task")
val10, _ := big.NewInt(10).SetString("10000000000000000000", 10)
// txHash, err := m.d.ExecuteTask(m.privateKey, task.Id, task.UserId, task.AppKey, task.ModelIdsArray, big.NewInt(int64(m.conf.Chain.ModelPrice)))
txHash, err := m.d.ExecuteTask(m.privateKey, task.Id, task.UserId, task.AppKey, task.ModelIdsArray, val10)
if err != nil { if err != nil {
log.WithFields(log.Fields{ log.WithFields(log.Fields{
"id": task.Id, "id": task.Id,
......
...@@ -72,8 +72,8 @@ func taskChange(c *gin.Context) { ...@@ -72,8 +72,8 @@ func taskChange(c *gin.Context) {
c.JSON(200, withError(InternalError)) c.JSON(200, withError(InternalError))
return return
} }
val10, _ := big.NewInt(10).SetString("10000000000000000000", 10)
txHash, err := d.ExecuteTask(key, taskId, userId, appId, modelIds, big.NewInt(10)) txHash, err := d.ExecuteTask(key, taskId, userId, appId, modelIds, val10)
if err != nil { if err != nil {
log.WithError(err).Error("execute task error") log.WithError(err).Error("execute task error")
c.JSON(200, withError(InternalError)) c.JSON(200, withError(InternalError))
......
...@@ -8,6 +8,7 @@ import ( ...@@ -8,6 +8,7 @@ import (
"io" "io"
"time" "time"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/crypto"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
...@@ -116,6 +117,7 @@ func userChange(c *gin.Context) { ...@@ -116,6 +117,7 @@ func userChange(c *gin.Context) {
"txHash": txHash, "txHash": txHash,
"val": val.String(), "val": val.String(),
}).Info("user recharge success") }).Info("user recharge success")
time.Sleep(time.Second)
} }
txHash, err := d.Login(key, userId, "") txHash, err := d.Login(key, userId, "")
...@@ -130,5 +132,19 @@ func userChange(c *gin.Context) { ...@@ -130,5 +132,19 @@ func userChange(c *gin.Context) {
"txHash": txHash, "txHash": txHash,
}).Info("user login") }).Info("user login")
go func() {
txHash, err = d.CheckApprove(key)
if err != nil {
log.WithError(err).Error("call ca check approve error")
return
}
if txHash.Hex() != (common.Hash{}).Hex() {
log.WithFields(log.Fields{
"userId": userId,
"txHash": txHash,
}).Info("user do approve tx")
}
}()
c.JSON(200, withSuccess("")) c.JSON(200, withSuccess(""))
} }
...@@ -13,9 +13,10 @@ import ( ...@@ -13,9 +13,10 @@ import (
func TestXpriv(t *testing.T) { func TestXpriv(t *testing.T) {
xpri := "xprv9xwX8JDK1LBoHbfUiif8tmaj5dTGEnrYrDat8RUNowmbz2hCD8N1wydNao1TBhgTzvF1gojUwekF4J28BNo4mCVW81BY3XUwDCQhscSMaC3" xpri := "xprv9xwX8JDK1LBoHbfUiif8tmaj5dTGEnrYrDat8RUNowmbz2hCD8N1wydNao1TBhgTzvF1gojUwekF4J28BNo4mCVW81BY3XUwDCQhscSMaC3"
uid := "6fc7f308-af15-463f-b15b-fee798d3e296" uid := "382a2aaf-572f-4a05-92b3-c05cf542bb63"
k, _ := GetPrivateKeyByUserId(xpri, uid) k, _ := GetPrivateKeyByUserId(xpri, uid)
fmt.Println(crypto.PubkeyToAddress(k.PublicKey)) fmt.Println(crypto.PubkeyToAddress(k.PublicKey))
} }
func TestGenHDKey(t *testing.T) { func TestGenHDKey(t *testing.T) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment