github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/contracts/chequebook/contract/chequebook.go (about)

     1  
     2  //此源码被清华学神尹成大魔王专业翻译分析并修改
     3  //尹成QQ77025077
     4  //尹成微信18510341407
     5  //尹成所在QQ群721929980
     6  //尹成邮箱 yinc13@mails.tsinghua.edu.cn
     7  //尹成毕业于清华大学,微软区块链领域全球最有价值专家
     8  //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620
     9  //代码生成-不要编辑。
    10  //此文件是生成的绑定,任何手动更改都将丢失。
    11  
    12  package contract
    13  
    14  import (
    15  	"math/big"
    16  	"strings"
    17  
    18  	ethereum "github.com/ethereum/go-ethereum"
    19  	"github.com/ethereum/go-ethereum/accounts/abi"
    20  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    21  	"github.com/ethereum/go-ethereum/common"
    22  	"github.com/ethereum/go-ethereum/core/types"
    23  	"github.com/ethereum/go-ethereum/event"
    24  )
    25  
    26  //ChequebookABI is the input ABI used to generate the binding from.
    27  const ChequebookABI = "[{\"constant\":false,\"inputs\":[],\"name\":\"kill\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"sent\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"beneficiary\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"sig_v\",\"type\":\"uint8\"},{\"name\":\"sig_r\",\"type\":\"bytes32\"},{\"name\":\"sig_s\",\"type\":\"bytes32\"}],\"name\":\"cash\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"deadbeat\",\"type\":\"address\"}],\"name\":\"Overdraft\",\"type\":\"event\"}]"
    28  
    29  //checkbookbin是用于部署新合同的编译字节码。
    30  const ChequebookBin = `0x606060405260008054600160a060020a033316600160a060020a03199091161790556102ec806100306000396000f3006060604052600436106100565763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166341c0e1b581146100585780637bf786f81461006b578063fbf788d61461009c575b005b341561006357600080fd5b6100566100ca565b341561007657600080fd5b61008a600160a060020a03600435166100f1565b60405190815260200160405180910390f35b34156100a757600080fd5b610056600160a060020a036004351660243560ff60443516606435608435610103565b60005433600160a060020a03908116911614156100ef57600054600160a060020a0316ff5b565b60016020526000908152604090205481565b600160a060020a0385166000908152600160205260408120548190861161012957600080fd5b3087876040516c01000000000000000000000000600160a060020a03948516810282529290931690910260148301526028820152604801604051809103902091506001828686866040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f115156101cf57600080fd5b505060206040510351600054600160a060020a039081169116146101f257600080fd5b50600160a060020a03808716600090815260016020526040902054860390301631811161026257600160a060020a0387166000818152600160205260409081902088905582156108fc0290839051600060405180830381858888f19350505050151561025d57600080fd5b6102b7565b6000547f2250e2993c15843b32621c89447cc589ee7a9f049c026986e545d3c2c0c6f97890600160a060020a0316604051600160a060020a03909116815260200160405180910390a186600160a060020a0316ff5b505050505050505600a165627a7a72305820533e856fc37e3d64d1706bcc7dfb6b1d490c8d566ea498d9d01ec08965a896ca0029`
    31  
    32  //Deploychequebook部署新的以太坊合同,将支票簿的实例绑定到该合同。
    33  func DeployChequebook(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Chequebook, error) {
    34  	parsed, err := abi.JSON(strings.NewReader(ChequebookABI))
    35  	if err != nil {
    36  		return common.Address{}, nil, nil, err
    37  	}
    38  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ChequebookBin), backend)
    39  	if err != nil {
    40  		return common.Address{}, nil, nil, err
    41  	}
    42  	return address, tx, &Chequebook{ChequebookCaller: ChequebookCaller{contract: contract}, ChequebookTransactor: ChequebookTransactor{contract: contract}, ChequebookFilterer: ChequebookFilterer{contract: contract}}, nil
    43  }
    44  
    45  //支票簿是围绕以太坊合同自动生成的Go绑定。
    46  type Chequebook struct {
    47  ChequebookCaller     //对合同具有只读约束力
    48  ChequebookTransactor //只写对合同有约束力
    49  ChequebookFilterer   //合同事件的日志筛选程序
    50  }
    51  
    52  //支票簿调用者是围绕以太坊合同自动生成的只读Go绑定。
    53  type ChequebookCaller struct {
    54  contract *bind.BoundContract //用于低级调用的通用协定包装器
    55  }
    56  
    57  //支票簿交易是围绕以太坊合同自动生成的只写即用绑定。
    58  type ChequebookTransactor struct {
    59  contract *bind.BoundContract //用于低级调用的通用协定包装器
    60  }
    61  
    62  //支票簿筛选器是围绕以太坊合同事件自动生成的日志筛选Go绑定。
    63  type ChequebookFilterer struct {
    64  contract *bind.BoundContract //用于低级调用的通用协定包装器
    65  }
    66  
    67  //ChequebookSession is an auto generated Go binding around an Ethereum contract,
    68  //具有预设的调用和事务处理选项。
    69  type ChequebookSession struct {
    70  Contract     *Chequebook       //为其设置会话的通用约定绑定
    71  CallOpts     bind.CallOpts     //在整个会话中使用的调用选项
    72  TransactOpts bind.TransactOpts //要在此会话中使用的事务验证选项
    73  }
    74  
    75  //CheQueBooCoprError会话是一个围绕Ethunm合同的自动生成只读GO绑定,
    76  //带预设通话选项。
    77  type ChequebookCallerSession struct {
    78  Contract *ChequebookCaller //用于设置会话的通用协定调用方绑定
    79  CallOpts bind.CallOpts     //在整个会话中使用的调用选项
    80  }
    81  
    82  //支票簿事务会话是围绕以太坊合同自动生成的只写即用绑定,
    83  //具有预设的Transact选项。
    84  type ChequebookTransactorSession struct {
    85  Contract     *ChequebookTransactor //用于设置会话的通用合同事务处理程序绑定
    86  TransactOpts bind.TransactOpts     //要在此会话中使用的事务验证选项
    87  }
    88  
    89  //ChequebookRaw是围绕以太坊合同自动生成的低级Go绑定。
    90  type ChequebookRaw struct {
    91  Contract *Chequebook //用于访问上的原始方法的通用合同绑定
    92  }
    93  
    94  //支票簿Callerraw是围绕以太坊合同自动生成的低级只读Go绑定。
    95  type ChequebookCallerRaw struct {
    96  Contract *ChequebookCaller //用于访问上的原始方法的通用只读协定绑定
    97  }
    98  
    99  //支票簿Transactorraw是围绕以太坊合同自动生成的低级只写即用绑定。
   100  type ChequebookTransactorRaw struct {
   101  Contract *ChequebookTransactor //用于访问上的原始方法的通用只写协定绑定
   102  }
   103  
   104  //newcheckbook创建一个新的checkbook实例,绑定到特定的已部署合同。
   105  func NewChequebook(address common.Address, backend bind.ContractBackend) (*Chequebook, error) {
   106  	contract, err := bindChequebook(address, backend, backend, backend)
   107  	if err != nil {
   108  		return nil, err
   109  	}
   110  	return &Chequebook{ChequebookCaller: ChequebookCaller{contract: contract}, ChequebookTransactor: ChequebookTransactor{contract: contract}, ChequebookFilterer: ChequebookFilterer{contract: contract}}, nil
   111  }
   112  
   113  //newcheckbookcaller创建一个新的支票簿只读实例,绑定到特定的已部署合同。
   114  func NewChequebookCaller(address common.Address, caller bind.ContractCaller) (*ChequebookCaller, error) {
   115  	contract, err := bindChequebook(address, caller, nil, nil)
   116  	if err != nil {
   117  		return nil, err
   118  	}
   119  	return &ChequebookCaller{contract: contract}, nil
   120  }
   121  
   122  //newcheckbooktransaction创建一个新的支票簿的只写实例,绑定到特定的已部署合同。
   123  func NewChequebookTransactor(address common.Address, transactor bind.ContractTransactor) (*ChequebookTransactor, error) {
   124  	contract, err := bindChequebook(address, nil, transactor, nil)
   125  	if err != nil {
   126  		return nil, err
   127  	}
   128  	return &ChequebookTransactor{contract: contract}, nil
   129  }
   130  
   131  //newcheckbookfilter创建一个新的checkbook日志过滤器实例,绑定到一个特定的已部署合同。
   132  func NewChequebookFilterer(address common.Address, filterer bind.ContractFilterer) (*ChequebookFilterer, error) {
   133  	contract, err := bindChequebook(address, nil, nil, filterer)
   134  	if err != nil {
   135  		return nil, err
   136  	}
   137  	return &ChequebookFilterer{contract: contract}, nil
   138  }
   139  
   140  //bindcheckbook将通用包装绑定到已部署的协定。
   141  func bindChequebook(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   142  	parsed, err := abi.JSON(strings.NewReader(ChequebookABI))
   143  	if err != nil {
   144  		return nil, err
   145  	}
   146  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   147  }
   148  
   149  //调用调用(常量)contract方法,参数作为输入值,并且
   150  //将输出设置为结果。结果类型可能是用于
   151  //返回、匿名返回的接口切片和命名的结构
   152  //返回。
   153  func (_Chequebook *ChequebookRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   154  	return _Chequebook.Contract.ChequebookCaller.contract.Call(opts, result, method, params...)
   155  }
   156  
   157  //转账启动普通交易以将资金转移到合同,调用
   158  //它的默认方法(如果有)。
   159  func (_Chequebook *ChequebookRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   160  	return _Chequebook.Contract.ChequebookTransactor.contract.Transfer(opts)
   161  }
   162  
   163  //Transact使用参数作为输入值调用(付费)Contract方法。
   164  func (_Chequebook *ChequebookRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   165  	return _Chequebook.Contract.ChequebookTransactor.contract.Transact(opts, method, params...)
   166  }
   167  
   168  //调用调用(常量)contract方法,参数作为输入值,并且
   169  //将输出设置为结果。结果类型可能是用于
   170  //返回、匿名返回的接口切片和命名的结构
   171  //返回。
   172  func (_Chequebook *ChequebookCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   173  	return _Chequebook.Contract.contract.Call(opts, result, method, params...)
   174  }
   175  
   176  //转账启动普通交易以将资金转移到合同,调用
   177  //它的默认方法(如果有)。
   178  func (_Chequebook *ChequebookTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   179  	return _Chequebook.Contract.contract.Transfer(opts)
   180  }
   181  
   182  //Transact使用参数作为输入值调用(付费)Contract方法。
   183  func (_Chequebook *ChequebookTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   184  	return _Chequebook.Contract.contract.Transact(opts, method, params...)
   185  }
   186  
   187  //发送是一个绑定合同方法0x7Bf786f8的免费数据检索调用。
   188  //
   189  //solidity:函数发送(地址)常量返回(uint256)
   190  func (_Chequebook *ChequebookCaller) Sent(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
   191  	var (
   192  		ret0 = new(*big.Int)
   193  	)
   194  	out := ret0
   195  	err := _Chequebook.contract.Call(opts, out, "sent", arg0)
   196  	return *ret0, err
   197  }
   198  
   199  //发送是一个绑定合同方法0x7Bf786f8的免费数据检索调用。
   200  //
   201  //solidity:函数发送(地址)常量返回(uint256)
   202  func (_Chequebook *ChequebookSession) Sent(arg0 common.Address) (*big.Int, error) {
   203  	return _Chequebook.Contract.Sent(&_Chequebook.CallOpts, arg0)
   204  }
   205  
   206  //发送是一个绑定合同方法0x7Bf786f8的免费数据检索调用。
   207  //
   208  //solidity:函数发送(地址)常量返回(uint256)
   209  func (_Chequebook *ChequebookCallerSession) Sent(arg0 common.Address) (*big.Int, error) {
   210  	return _Chequebook.Contract.Sent(&_Chequebook.CallOpts, arg0)
   211  }
   212  
   213  //现金是一个受合同方法0xFBF788D6约束的已付款的变元交易。
   214  //
   215  //Solidity: function cash(beneficiary address, amount uint256, sig_v uint8, sig_r bytes32, sig_s bytes32) returns()
   216  func (_Chequebook *ChequebookTransactor) Cash(opts *bind.TransactOpts, beneficiary common.Address, amount *big.Int, sig_v uint8, sig_r [32]byte, sig_s [32]byte) (*types.Transaction, error) {
   217  	return _Chequebook.contract.Transact(opts, "cash", beneficiary, amount, sig_v, sig_r, sig_s)
   218  }
   219  
   220  //现金是一个受合同方法0xFBF788D6约束的已付款的变元交易。
   221  //
   222  //稳固性:功能现金(受益人地址,金额:uint256,sig_v uint8,sig_r bytes 32,sig_s bytes 32)返回()
   223  func (_Chequebook *ChequebookSession) Cash(beneficiary common.Address, amount *big.Int, sig_v uint8, sig_r [32]byte, sig_s [32]byte) (*types.Transaction, error) {
   224  	return _Chequebook.Contract.Cash(&_Chequebook.TransactOpts, beneficiary, amount, sig_v, sig_r, sig_s)
   225  }
   226  
   227  //现金是一个受合同方法0xFBF788D6约束的已付款的变元交易。
   228  //
   229  //稳固性:功能现金(受益人地址,金额:uint256,sig_v uint8,sig_r bytes 32,sig_s bytes 32)返回()
   230  func (_Chequebook *ChequebookTransactorSession) Cash(beneficiary common.Address, amount *big.Int, sig_v uint8, sig_r [32]byte, sig_s [32]byte) (*types.Transaction, error) {
   231  	return _Chequebook.Contract.Cash(&_Chequebook.TransactOpts, beneficiary, amount, sig_v, sig_r, sig_s)
   232  }
   233  
   234  //kill是一个付费的mutator事务,绑定合同方法0x41c0e1b5。
   235  //
   236  //solidity:函数kill()返回()
   237  func (_Chequebook *ChequebookTransactor) Kill(opts *bind.TransactOpts) (*types.Transaction, error) {
   238  	return _Chequebook.contract.Transact(opts, "kill")
   239  }
   240  
   241  //kill是一个付费的mutator事务,绑定合同方法0x41c0e1b5。
   242  //
   243  //solidity:函数kill()返回()
   244  func (_Chequebook *ChequebookSession) Kill() (*types.Transaction, error) {
   245  	return _Chequebook.Contract.Kill(&_Chequebook.TransactOpts)
   246  }
   247  
   248  //kill是一个付费的mutator事务,绑定合同方法0x41c0e1b5。
   249  //
   250  //solidity:函数kill()返回()
   251  func (_Chequebook *ChequebookTransactorSession) Kill() (*types.Transaction, error) {
   252  	return _Chequebook.Contract.Kill(&_Chequebook.TransactOpts)
   253  }
   254  
   255  //从filterOvertaft返回checkbookOvertaftIterator,用于对支票簿合同引发的透支事件的原始日志和未打包数据进行迭代。
   256  type ChequebookOverdraftIterator struct {
   257  Event *ChequebookOverdraft //包含合同细节和原始日志的事件
   258  
   259  contract *bind.BoundContract //用于解包事件数据的通用合同
   260  event    string              //用于解包事件数据的事件名称
   261  
   262  logs chan types.Log        //日志通道接收找到的合同事件
   263  sub  ethereum.Subscription //错误、完成和终止订阅
   264  done bool                  //订阅是否完成传递日志
   265  fail error                 //停止迭代时出错
   266  }
   267  
   268  //next将迭代器前进到后续事件,返回是否存在
   269  //是否找到更多事件。在检索或分析错误的情况下,false是
   270  //返回错误(),可以查询错误()的确切错误。
   271  func (it *ChequebookOverdraftIterator) Next() bool {
   272  //如果迭代器失败,请停止迭代
   273  	if it.fail != nil {
   274  		return false
   275  	}
   276  //如果迭代器已完成,则直接传递可用的
   277  	if it.done {
   278  		select {
   279  		case log := <-it.logs:
   280  			it.Event = new(ChequebookOverdraft)
   281  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   282  				it.fail = err
   283  				return false
   284  			}
   285  			it.Event.Raw = log
   286  			return true
   287  
   288  		default:
   289  			return false
   290  		}
   291  	}
   292  //迭代器仍在进行中,请等待数据或错误事件
   293  	select {
   294  	case log := <-it.logs:
   295  		it.Event = new(ChequebookOverdraft)
   296  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   297  			it.fail = err
   298  			return false
   299  		}
   300  		it.Event.Raw = log
   301  		return true
   302  
   303  	case err := <-it.sub.Err():
   304  		it.done = true
   305  		it.fail = err
   306  		return it.Next()
   307  	}
   308  }
   309  
   310  //重试时出错。筛选过程中出现任何检索或分析错误。
   311  func (it *ChequebookOverdraftIterator) Error() error {
   312  	return it.fail
   313  }
   314  
   315  //关闭终止迭代过程,释放任何挂起的基础
   316  //资源。
   317  func (it *ChequebookOverdraftIterator) Close() error {
   318  	it.sub.Unsubscribe()
   319  	return nil
   320  }
   321  
   322  //支票簿透支表示支票簿合同引发的透支事件。
   323  type ChequebookOverdraft struct {
   324  	Deadbeat common.Address
   325  Raw      types.Log //区块链特定的上下文信息
   326  }
   327  
   328  //filter透支是一个自由的日志检索操作,绑定合同事件0x2250e2993c15843b362621c89447cc589ee7a9f049c0226986e545d3c2c0c6f978。
   329  //
   330  //Solidity: event Overdraft(deadbeat address)
   331  func (_Chequebook *ChequebookFilterer) FilterOverdraft(opts *bind.FilterOpts) (*ChequebookOverdraftIterator, error) {
   332  
   333  	logs, sub, err := _Chequebook.contract.FilterLogs(opts, "Overdraft")
   334  	if err != nil {
   335  		return nil, err
   336  	}
   337  	return &ChequebookOverdraftIterator{contract: _Chequebook.contract, event: "Overdraft", logs: logs, sub: sub}, nil
   338  }
   339  
   340  //watchOverflft是一个免费的日志订阅操作,绑定合同事件0x2250e2993c15843b362621c89447cc589ee7a9f049c0226986e545d3c2c0c6f978。
   341  //
   342  //坚固性:事件透支(死区地址)
   343  func (_Chequebook *ChequebookFilterer) WatchOverdraft(opts *bind.WatchOpts, sink chan<- *ChequebookOverdraft) (event.Subscription, error) {
   344  
   345  	logs, sub, err := _Chequebook.contract.WatchLogs(opts, "Overdraft")
   346  	if err != nil {
   347  		return nil, err
   348  	}
   349  	return event.NewSubscription(func(quit <-chan struct{}) error {
   350  		defer sub.Unsubscribe()
   351  		for {
   352  			select {
   353  			case log := <-logs:
   354  //新日志到达,分析事件并转发给用户
   355  				event := new(ChequebookOverdraft)
   356  				if err := _Chequebook.contract.UnpackLog(event, "Overdraft", log); err != nil {
   357  					return err
   358  				}
   359  				event.Raw = log
   360  
   361  				select {
   362  				case sink <- event:
   363  				case err := <-sub.Err():
   364  					return err
   365  				case <-quit:
   366  					return nil
   367  				}
   368  			case err := <-sub.Err():
   369  				return err
   370  			case <-quit:
   371  				return nil
   372  			}
   373  		}
   374  	}), nil
   375  }