github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/contracts/chequebook/contract/chequebook.go (about)

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