Documentation ¶
Overview ¶
Package chequebook package wraps the 'chequebook' Ethereum smart contract.
The functions in this package allow using chequebook for issuing, receiving, verifying cheques in datx; (auto)cashing cheques in datx as well as (auto)depositing datx to the chequebook contract.
Index ¶
- Constants
- Variables
- func ValidateCode(ctx context.Context, b Backend, address common.Address) (ok bool, err error)
- type Api
- type Backend
- type Cheque
- type Chequebook
- func (self *Chequebook) Address() common.Address
- func (self *Chequebook) AutoDeposit(interval time.Duration, threshold, buffer *big.Int)
- func (self *Chequebook) Balance() *big.Int
- func (self *Chequebook) Cash(ch *Cheque) (txhash string, err error)
- func (self *Chequebook) Deposit(amount *big.Int) (string, error)
- func (self *Chequebook) Issue(beneficiary common.Address, amount *big.Int) (ch *Cheque, err error)
- func (self *Chequebook) MarshalJSON() ([]byte, error)
- func (self *Chequebook) Owner() common.Address
- func (self *Chequebook) Save() (err error)
- func (self *Chequebook) Stop()
- func (self *Chequebook) String() string
- func (self *Chequebook) UnmarshalJSON(data []byte) error
- type Inbox
- type Outbox
- type Params
Constants ¶
const Version = "1.0"
Variables ¶
var ContractParams = &Params{contract.ChequebookBin, contract.ChequebookABI}
Functions ¶
Types ¶
type Api ¶
type Api struct {
// contains filtered or unexported fields
}
func NewApi ¶
func NewApi(ch func() *Chequebook) *Api
type Backend ¶
type Backend interface { bind.ContractBackend TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error) BalanceAt(ctx context.Context, address common.Address, blockNum *big.Int) (*big.Int, error) }
Backend wraps all methods required for chequebook operation.
type Cheque ¶
type Cheque struct { Contract common.Address // address of chequebook, needed to avoid cross-contract submission Beneficiary common.Address Amount *big.Int // cumulative amount of all funds sent Sig []byte // signature Sign(Keccak256(contract, beneficiary, amount), prvKey) }
Cheque represents a payment promise to a single beneficiary.
type Chequebook ¶
type Chequebook struct {
// contains filtered or unexported fields
}
Chequebook can create and sign cheques from a single contract to multiple beneficiaries. It is the outgoing payment handler for peer to peer micropayments.
func LoadChequebook ¶
func LoadChequebook(path string, prvKey *ecdsa.PrivateKey, backend Backend, checkBalance bool) (self *Chequebook, err error)
LoadChequebook loads a chequebook from disk (file path).
func NewChequebook ¶
func NewChequebook(path string, contractAddr common.Address, prvKey *ecdsa.PrivateKey, backend Backend) (self *Chequebook, err error)
NewChequebook creates a new Chequebook.
func (*Chequebook) Address ¶
func (self *Chequebook) Address() common.Address
Address returns the on-chain contract address of the chequebook.
func (*Chequebook) AutoDeposit ¶
func (self *Chequebook) AutoDeposit(interval time.Duration, threshold, buffer *big.Int)
AutoDeposit (re)sets interval time and amount which triggers sending funds to the chequebook. Contract backend needs to be set if threshold is not less than buffer, then deposit will be triggered on every new cheque issued.
func (*Chequebook) Balance ¶
func (self *Chequebook) Balance() *big.Int
Balance returns the current balance of the chequebook.
func (*Chequebook) Cash ¶
func (self *Chequebook) Cash(ch *Cheque) (txhash string, err error)
Cash is a convenience method to cash any cheque.
func (*Chequebook) Deposit ¶
func (self *Chequebook) Deposit(amount *big.Int) (string, error)
Deposit deposits money to the chequebook account.
func (*Chequebook) Issue ¶
Issue creates a cheque signed by the chequebook owner's private key. The signer commits to a contract (one that they own), a beneficiary and amount.
func (*Chequebook) MarshalJSON ¶
func (self *Chequebook) MarshalJSON() ([]byte, error)
MarshalJSON serialises a chequebook.
func (*Chequebook) Owner ¶
func (self *Chequebook) Owner() common.Address
Owner returns the owner account of the chequebook.
func (*Chequebook) Save ¶
func (self *Chequebook) Save() (err error)
Save persists the chequebook on disk, remembering balance, contract address and cumulative amount of funds sent for each beneficiary.
func (*Chequebook) Stop ¶
func (self *Chequebook) Stop()
Stop quits the autodeposit go routine to terminate
func (*Chequebook) String ¶
func (self *Chequebook) String() string
func (*Chequebook) UnmarshalJSON ¶
func (self *Chequebook) UnmarshalJSON(data []byte) error
UnmarshalJSON deserialises a chequebook.
type Inbox ¶
type Inbox struct {
// contains filtered or unexported fields
}
Inbox can deposit, verify and cash cheques from a single contract to a single beneficiary. It is the incoming payment handler for peer to peer micropayments.
func NewInbox ¶
func NewInbox(prvKey *ecdsa.PrivateKey, contractAddr, beneficiary common.Address, signer *ecdsa.PublicKey, abigen bind.ContractBackend) (self *Inbox, err error)
NewInbox creates an Inbox. An Inboxes is not persisted, the cumulative sum is updated from blockchain when first cheque is received.
func (*Inbox) AutoCash ¶
AutoCash (re)sets maximum time and amount which triggers cashing of the last uncashed cheque if maxUncashed is set to 0, then autocash on receipt.
type Outbox ¶
type Outbox struct {
// contains filtered or unexported fields
}
Outbox can issue cheques from a single contract to a single beneficiary.
func NewOutbox ¶
func NewOutbox(chbook *Chequebook, beneficiary common.Address) *Outbox
NewOutbox creates an outbox.
func (*Outbox) AutoDeposit ¶
AutoDeposit enables auto-deposits on the underlying chequebook.