blockchain

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 25, 2017 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DealAcceptedTopic = common.HexToHash("0x3a38edea6028913403c74ce8433c90eca94f4ca074d318d8cb77be5290ba4f15")
View Source
var DealClosedTopic = common.HexToHash("0x72615f99a62a6cc2f8452d5c0c9cbc5683995297e1d988f09bb1471d4eefb890")
View Source
var DealOpenedTopic = common.HexToHash("0x873cb35202fef184c9f8ee23c04e36dc38f3e26fb285224ca574a837be976848")

Functions

This section is empty.

Types

type Blockchainer

type Blockchainer interface {
	Dealer
	Tokener
}

Blockchainer interface describes operations with deals and tokens

func NewAPI

func NewAPI(ethEndpoint *string, gasPrice *int64) (Blockchainer, error)

NewAPI builds new Blockchain instance with given endpoint and gas price

type Dealer

type Dealer interface {
	// OpenDeal is function to open new deal in blockchain from given address,
	// it have effect to change blockchain state, key is mandatory param
	// other params caused by SONM office's agreement
	// It could be called by client
	// return transaction, not deal id
	OpenDeal(key *ecdsa.PrivateKey, deal *pb.Deal) (*types.Transaction, error)
	// OpenDealPending creates deal and waits for transaction to be committed on blockchain.
	// wait is duration to wait for transaction commit, recommended value is 180 seconds.
	OpenDealPending(ctx context.Context, key *ecdsa.PrivateKey, deal *pb.Deal, wait time.Duration) (*big.Int, error)

	// AcceptDeal accepting deal by hub, causes that hub accept to sell its resources
	// It could be called by hub
	AcceptDeal(key *ecdsa.PrivateKey, id *big.Int) (*types.Transaction, error)
	// CloseDeal closing deal by given id
	// It could be called by client
	CloseDeal(key *ecdsa.PrivateKey, id *big.Int) (*types.Transaction, error)

	// GetDeals is returns ids by given address
	GetDeals(address string) ([]*big.Int, error)
	// GetDealInfo is returns deal info by given id
	GetDealInfo(id *big.Int) (*pb.Deal, error)
	// GetDealAmount return global deal counter
	GetDealAmount() (*big.Int, error)
	// GetOpenedDeal returns only opened deals by given hub/client addresses
	GetOpenedDeal(hubAddr string, clientAddr string) ([]*big.Int, error)
	// GetAcceptedDeal returns only accepted deals by given hub/client addresses
	GetAcceptedDeal(hubAddr string, clientAddr string) ([]*big.Int, error)
	// GetClosedDeal returns only closed deals by given hub/client addresses
	GetClosedDeal(hubAddr string, clientAddr string) ([]*big.Int, error)
}

Dealer - interface above SONM deals client - who wanna buy hub - who wanna selling its resources WARN: this may change at future, by any proposal

type Tokener

type Tokener interface {
	// Approve - add allowance from caller to other contract to spend tokens
	Approve(key *ecdsa.PrivateKey, to string, amount *big.Int) (*types.Transaction, error)
	// Transfer token from caller
	Transfer(key *ecdsa.PrivateKey, to string, amount *big.Int) (*types.Transaction, error)
	// TransferFrom fallback function for contracts to transfer you allowance
	TransferFrom(key *ecdsa.PrivateKey, from string, to string, amount *big.Int) (*types.Transaction, error)

	// BalanceOf returns balance of given address
	BalanceOf(address string) (*big.Int, error)
	// AllowanceOf returns allowance of given address to spender account
	AllowanceOf(from string, to string) (*big.Int, error)
	// TotalSupply - all amount of emitted token
	TotalSupply() (*big.Int, error)
	// GetTokens - send 100 SNMT token for message caller
	// this function added for MVP purposes and has been deleted later
	GetTokens(key *ecdsa.PrivateKey) (*types.Transaction, error)
}

Tokener is go implementation of ERC20-compatibility token with full functionality high-level interface standart description with placed: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL