zcncore

package
v1.0.74 Latest Latest
Warning

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

Go to latest
Published: May 27, 2020 License: MIT Imports: 24 Imported by: 9

Documentation

Index

Constants

View Source
const (
	REGISTER_CLIENT                  = `/v1/client/put`
	PUT_TRANSACTION                  = `/v1/transaction/put`
	TXN_VERIFY_URL                   = `/v1/transaction/get/confirmation?hash=`
	GET_BALANCE                      = `/v1/client/get/balance?client_id=`
	GET_LOCK_CONFIG                  = `/v1/screst/` + InterestPoolSmartContractAddress + `/getLockConfig`
	GET_LOCKED_TOKENS                = `/v1/screst/` + InterestPoolSmartContractAddress + `/getPoolsStats?client_id=`
	GET_BLOCK_INFO                   = `/v1/block/get?`
	GET_MAGIC_BLOCK_INFO             = `/v1/block/magic/get?`
	GET_LATEST_FINALIZED             = `/v1/block/get/latest_finalized`
	GET_LATEST_FINALIZED_MAGIC_BLOCK = `/v1/block/get/latest_finalized_magic_block`
	GET_CHAIN_STATS                  = `/v1/chain/get/stats`

	// vesting SC
	GET_VESTING_CONFIG       = `/v1/screst/` + VestingSmartContractAddress + `/getConfig`
	GET_VESTING_POOL_INFO    = `/v1/screst/` + VestingSmartContractAddress + `/getPoolInfo`
	GET_VESTING_CLIENT_POOLS = `/v1/screst/` + VestingSmartContractAddress + `/getClientPools`

	// TORM (sfxdx): remove from zwallet
	GET_BLOBBERS            = `/v1/screst/` + StorageSmartContractAddress + `/getblobbers`
	GET_READ_POOL_STATS     = `/v1/screst/` + StorageSmartContractAddress + `/getReadPoolsStats?client_id=`
	GET_WRITE_POOL_STAT     = `/v1/screst/` + StorageSmartContractAddress + `/getWritePoolStat?allocation_id=`
	GET_STAKE_POOL_STAT     = `/v1/screst/` + StorageSmartContractAddress + `/getStakePoolStat?blobber_id=`
	GET_CHALLENGE_POOL_STAT = `/v1/screst/` + StorageSmartContractAddress + `/getChallengePoolStat?allocation_id=`
	GET_STORAGE_SC_CONFIG   = `/v1/screst/` + StorageSmartContractAddress + `/getConfig`

	// miner SC
	GET_MINERSC_NODE   = `/v1/screst/` + MinerSmartContractAddress + "/nodeStat"
	GET_MINERSC_POOL   = `/v1/screst/` + MinerSmartContractAddress + "/nodePoolStat"
	GET_MINERSC_CONFIG = `/v1/screst/` + MinerSmartContractAddress + "/configs"
	GET_MINERSC_USER   = `/v1/screst/` + MinerSmartContractAddress + "/getUserPools"
)
View Source
const (
	// TORM (sfxdx) remove from zwallet
	StorageSmartContractAddress = `6dba10422e368813802877a85039d3985d96760ed844092319743fb3a76712d7`

	VestingSmartContractAddress      = `2bba5b05949ea59c80aed3ac3474d7379d3be737e8eb5a968c52295e48333ead`
	FaucetSmartContractAddress       = `6dba10422e368813802877a85039d3985d96760ed844092319743fb3a76712d3`
	InterestPoolSmartContractAddress = `cf8d0df9bd8cc637a4ff4e792ffe3686da6220c45f0e1103baa609f3f1751ef4`
	MultiSigSmartContractAddress     = `27b5ef7120252b79f9dd9c05505dd28f328c80f6863ee446daede08a84d651a7`
	MinerSmartContractAddress        = `6dba10422e368813802877a85039d3985d96760ed844092319743fb3a76712d9`
	MultiSigRegisterFuncName         = "register"
	MultiSigVoteFuncName             = "vote"
)
View Source
const (
	StatusSuccess      int = 0
	StatusNetworkError int = 1
	// TODO: Change to specific error
	StatusError            int = 2
	StatusRejectedByUser   int = 3
	StatusInvalidSignature int = 4
	StatusAuthError        int = 5
	StatusAuthVerifyFailed int = 6
	StatusAuthTimeout      int = 7
	StatusUnknown          int = -1
)
View Source
const (
	OpGetTokenLockConfig int = iota
	OpGetLockedTokens
	OpGetUserPools
	OpGetUserPoolDetail
	OpGetBlobbers
	OpGetReadPoolsStats
	OpGetWritePoolStat
	OpGetStakePoolStat
	OpGetChallengePoolStat
	OpGetStorageSCConfig
)
View Source
const NETWORK_ENDPOINT = "/network"
View Source
const TOKEN_UNIT = int64(10000000000)

Variables

Functions

func CloseLog

func CloseLog()

CloseLog closes log file

func ConvertToToken

func ConvertToToken(value int64) float64

ConvertToToken converts the value to ZCN tokens

func ConvertToValue

func ConvertToValue(token float64) int64

ConvertToValue converts ZCN tokens to value

func CreateMSVote

func CreateMSVote(proposal, grpClientID, signerWalletstr, toClientID string, token int64) (string, error)

CreateMSVote create a vote for multisig

func CreateMSWallet

func CreateMSWallet(t, n int) (string, string, []string, error)

CreateMSWallet returns multisig wallet information

func CreateWallet

func CreateWallet(statusCb WalletCallback) error

CreateWallet creates the a wallet for the configure signature scheme. It also registers the wallet again to block chain.

func GetBalance

func GetBalance(cb GetBalanceCallback) error

GetBalance retreives wallet balance from sharders

func GetBalanceWallet

func GetBalanceWallet(walletStr string, cb GetBalanceCallback) error

GetBalance retreives wallet balance from sharders

func GetBlobbers

func GetBlobbers(cb GetInfoCallback) error

func GetBlockByRound

func GetBlockByRound(ctx context.Context, numSharders int, round int64) (b *block.Block, err error)

func GetChainStats

func GetChainStats(ctx context.Context) (b *block.ChainStats, err error)

func GetChallengePoolStat added in v1.0.38

func GetChallengePoolStat(cb GetInfoCallback, allocID string) (err error)

GetChallengePoolStat returns statistic of tokens in a challenge pool.

func GetClientID

func GetClientID(pkey string) string

GetClientID -- computes Client ID from publickey

func GetIdForUrl

func GetIdForUrl(url string) string

func GetLatestFinalized

func GetLatestFinalized(ctx context.Context, numSharders int) (b *block.Header, err error)

func GetLatestFinalizedMagicBlock

func GetLatestFinalizedMagicBlock(ctx context.Context, numSharders int) (m *block.MagicBlock, err error)

func GetLockConfig

func GetLockConfig(cb GetInfoCallback) error

GetLockConfig returns the lock token configuration information such as interest rate from blockchain

func GetLockedTokens

func GetLockedTokens(cb GetInfoCallback) error

GetLockedTokens returns the ealier locked token pool stats

func GetMagicBlockByNumber

func GetMagicBlockByNumber(ctx context.Context, numSharders int, number int64) (m *block.MagicBlock, err error)

func GetMinShardersVerify

func GetMinShardersVerify() int

func GetMinerSCConfig

func GetMinerSCConfig(cb GetInfoCallback) (err error)

func GetMinerSCNodeInfo

func GetMinerSCNodeInfo(id string, cb GetInfoCallback) (err error)

func GetMinerSCNodePool

func GetMinerSCNodePool(id, poolID string, cb GetInfoCallback) (err error)

func GetMinerSCUserInfo

func GetMinerSCUserInfo(clientID string, cb GetInfoCallback) (err error)

func GetMultisigPayload

func GetMultisigPayload(mswstr string) (interface{}, error)

GetMultisigPayload given a multisig wallet as a string, makes a multisig wallet payload to register

func GetMultisigVotePayload

func GetMultisigVotePayload(msvstr string) (interface{}, error)

GetMultisigVotePayload given a multisig vote as a string, makes a multisig vote payload to register

func GetReadPoolsStats added in v1.0.34

func GetReadPoolsStats(cb GetInfoCallback) (err error)

GetReadPoolsStats returns statistic of locked tokens in read pool.

func GetStakePoolStat added in v1.0.36

func GetStakePoolStat(cb GetInfoCallback, blobberID string) (err error)

GetStakePoolStat returns statistic of locked tokens in a stake pool.

func GetStorageSCConfig

func GetStorageSCConfig(cb GetInfoCallback) (err error)

GetStorageSCConfig returns current configurations of storage SC.

func GetVersion

func GetVersion() string

GetVersion - returns version string

func GetVestingClientList

func GetVestingClientList(clientID common.Key, cb GetInfoCallback) (err error)

func GetVestingPoolInfo

func GetVestingPoolInfo(poolID common.Key, cb GetInfoCallback) (err error)

func GetVestingSCConfig

func GetVestingSCConfig(cb GetInfoCallback) (err error)

func GetWallet

func GetWallet(walletStr string) (*zcncrypto.Wallet, error)

GetWallet get a wallet object from a wallet string

func GetWalletClientID

func GetWalletClientID(walletStr string) (string, error)

GetWalletClientID -- given a walletstr return ClientID

func GetWritePoolStat added in v1.0.34

func GetWritePoolStat(cb GetInfoCallback, allocID string) (err error)

GetWritePoolStat returns statistic of locked tokens in a write pool.

func GetZcnUSDInfo

func GetZcnUSDInfo(cb GetUSDInfoCallback) error

GetZcnUSDInfo returns USD value for ZCN token from coinmarketcap.com

func Init

func Init(c string) error

Init inializes the SDK with miner, sharder and signature scheme provided in configuration provided in JSON format

func InitZCNSDK

func InitZCNSDK(blockWorker string, signscheme string, configs ...func(*ChainConfig) error) error

InitZCNSDK initializes the SDK with miner, sharder and signature scheme provided.

func IsMnemonicValid

func IsMnemonicValid(mnemonic string) bool

IsMnemonicValid is an utility function to check the mnemonic valid

func RecoverWallet

func RecoverWallet(mnemonic string, statusCb WalletCallback) error

RecoverWallet recovers the previously generated wallet using the mnemonic. It also registers the wallet again to block chain.

func RegisterToMiners

func RegisterToMiners(wallet *zcncrypto.Wallet, statusCb WalletCallback) error

RegisterToMiners can be used to register the wallet.

func RegisterWallet

func RegisterWallet(walletString string, cb WalletCallback)

RegisterWallet registers multisig related wallets

func SetAuthUrl

func SetAuthUrl(url string) error

SetAuthUrl will be called by app to set zauth URL to SDK.

func SetLogFile

func SetLogFile(logFile string, verbose bool)

SetLogFile - sets file path to write log verbose - true - console output; false - no console output

func SetLogLevel

func SetLogLevel(lvl int)

SetLogLevel set the log level. lvl - 0 disabled; higher number (upto 4) more verbosity

func SetWalletInfo

func SetWalletInfo(w string, splitKeyWallet bool) error

SetWalletInfo should be set before any transaction or client specific APIs splitKeyWallet parameter is valid only if SignatureScheme is "BLS0Chain"

func SetupAuth

func SetupAuth(authHost, clientID, clientKey, publicKey, privateKey, localPublicKey string, cb AuthCallback) error

SetupAuth prepare auth app with clientid, key and a set of public, private key and local publickey which is running on PC/Mac.

func SplitKeys

func SplitKeys(privateKey string, numSplits int) (string, error)

Split keys from the primary master key

func UpdateNetworkDetails

func UpdateNetworkDetails() error

func UpdateNetworkDetailsWorker

func UpdateNetworkDetailsWorker(ctx context.Context)

func UpdateRequired

func UpdateRequired(networkDetails *Network) bool

func VerifyContentHash

func VerifyContentHash(metaTxnDataJSON string) (bool, error)

func WithChainID

func WithChainID(id string) func(c *ChainConfig) error

func WithConfirmationChainLength

func WithConfirmationChainLength(m int) func(c *ChainConfig) error

func WithMinConfirmation

func WithMinConfirmation(m int) func(c *ChainConfig) error

func WithMinSubmit

func WithMinSubmit(m int) func(c *ChainConfig) error

Types

type AuthCallback

type AuthCallback interface {
	// This call back gives the status of the Two factor authenticator(zauth) setup.
	OnSetupComplete(status int, err string)
}

AuthCallback needs to be implemented by the caller SetupAuth()

type ChainConfig

type ChainConfig struct {
	ChainID                 string   `json:"chain_id,omitempty"`
	BlockWorker             string   `json:"block_worker"`
	Miners                  []string `json:"miners"`
	Sharders                []string `json:"sharders"`
	SignatureScheme         string   `json:"signaturescheme"`
	MinSubmit               int      `json:"min_submit"`
	MinConfirmation         int      `json:"min_confirmation"`
	ConfirmationChainLength int      `json:"confirmation_chain_length"`
}

type GetBalanceCallback

type GetBalanceCallback interface {
	OnBalanceAvailable(status int, value int64, info string)
}

GetBalanceCallback needs to be implemented by the caller of GetBalance() to get the status

type GetInfoCallback

type GetInfoCallback interface {
	// OnInfoAvailable will be called when GetLockTokenConfig is complete
	// if status == StatusSuccess then info is valid
	// is status != StatusSuccess then err will give the reason
	OnInfoAvailable(op int, status int, info string, err string)
}

GetInfoCallback needs to be implemented by the caller of GetLockTokenConfig() and GetLockedTokens()

type GetUSDInfoCallback

type GetUSDInfoCallback interface {
	// This will be called when GetZcnUSDInfo completes.
	// if status == StatusSuccess then info is valid
	// is status != StatusSuccess then err will give the reason
	OnUSDInfoAvailable(status int, info string, err string)
}

GetUSDInfoCallback needs to be implemented by the caller of GetZcnUSDInfo()

type MSTransfer

type MSTransfer struct {
	ClientID   string `json:"from"`
	ToClientID string `json:"to"`
	Amount     int64  `json:"amount"`
}

MSTransfer - a data structure to hold state transfer from one client to another

type MSVote

type MSVote struct {
	ProposalID string `json:"proposal_id"`

	// Client ID in transfer is that of the multi-sig wallet, not the signer.
	Transfer MSTransfer `json:"transfer"`

	Signature string `json:"signature"`
}

MSVote -- this should mimic the type Vote defined in MultiSig SC

type MSVoteCallback

type MSVoteCallback interface {
	OnVoteComplete(status int, proposal string, err string)
}

MSVoteCallback callback definition multisig Vote function

type MSWallet

type MSWallet struct {
	Id              int                                  `json:"id"`
	SignatureScheme string                               `json:"signature_scheme"`
	GroupClientID   string                               `json:"group_client_id"`
	GroupKey        *zcncrypto.BLS0ChainScheme           `json:"group_key"`
	SignerClientIDs []string                             `json:"sig_client_ids"`
	SignerKeys      []zcncrypto.BLS0ChainThresholdScheme `json:"signer_keys"`
	T               int                                  `json:"threshold"`
	N               int                                  `json:"num_subkeys"`
}

MSWallet Client data necessary for a multi-sig wallet.

func (*MSWallet) Marshal

func (msw *MSWallet) Marshal() (string, error)

Marshal returns json string

type MinerSCConfig

type MinerSCConfig struct {
	ID        common.Key `json:"id"`
	LastRound int64      `json:"last_round"`

	RewardRate   float64 `json:"reward_rate"`   //
	InterestRate float64 `json:"interest_rate"` //
	ViewChange   int64   `json:"view_change"`   //
	FreezeBefore int64   `json:"freeze_before"` //

	ShareRatio          float64 `json:"share_ratio"`           // ratio
	MaxCharge           float64 `json:"max_charge"`            // ratio
	Epoch               int64   `json:"epoch"`                 // rounds
	RewardDeclineRate   float64 `json:"reward_decline_rate"`   // ratio
	InterestDeclineRate float64 `json:"interest_decline_rate"` // ratio

	// total minted tokens for all
	MaxMint     common.Balance `json:"max_mint"`
	TotalMinted common.Balance `json:"total_minted"`
}

type MinerSCDelegatePool

type MinerSCDelegatePool struct {
	MinerSCPoolStats `json:"stats"`
	MinerSCPool      `json:"pool"`
}

type MinerSCLock

type MinerSCLock struct {
	ID string `json:"id"`
}

type MinerSCMinerInfo

type MinerSCMinerInfo struct {
	ID      string `json:"id"`
	BaseURL string `json:"url"`

	DelegateWallet    string         `json:"delegate_wallet"`     //
	ServiceCharge     float64        `json:"service_charge"`      // %
	NumberOfDelegates int            `json:"number_of_delegates"` //
	MinStake          common.Balance `json:"min_stake"`           //
	MaxStake          common.Balance `json:"max_stake"`           //

	Stat MinerSCMinerStat `json:"stat"`

	Pending  map[string]MinerSCDelegatePool `json:"pending"`
	Active   map[string]MinerSCDelegatePool `json:"active"`
	Deleting map[string]MinerSCDelegatePool `json:"deleting"`
}

type MinerSCMinerStat

type MinerSCMinerStat struct {
	// for miner (totals)
	BlockReward      common.Balance `json:"block_reward,omitempty"`
	ServiceCharge    common.Balance `json:"service_charge,omitempty"`
	UsersFee         common.Balance `json:"users_fee,omitempty"`
	BlockShardersFee common.Balance `json:"block_sharders_fee,omitempty"`
	// for sharder (total)
	SharderRewards common.Balance `json:"sharder_rewards,omitempty"`
}

type MinerSCPool

type MinerSCPool struct {
	ID      string         `json:"id"`
	Balance common.Balance `json:"balance"`
}

type MinerSCPoolStats

type MinerSCPoolStats struct {
	DelegateID   string         `json:"delegate_id"`
	High         common.Balance `json:"high"`
	Low          common.Balance `json:"low"`
	InterestRate float64        `json:"interest_rate"`
	TotalPaid    common.Balance `json:"total_paid"`
	NumRounds    int64          `json:"number_rounds"`
}

type MinerSCUnlock

type MinerSCUnlock struct {
	ID     string `json:"id"`
	PoolID string `json:"pool_id"`
}

type MinerSCUserInfo added in v1.0.73

type MinerSCUserInfo struct {
	Pools []MinerSCUserPool `json:"pools"`
}

type MinerSCUserPool added in v1.0.73

type MinerSCUserPool struct {
	MinerID        common.Key     `json:"miner_id"`
	Balance        common.Balance `json:"balance"`
	StakeDiversity float64        `json:"stake_diversity"`
	PoolID         common.Key     `json:"pool_id"`
}

type MultisigSCWallet

type MultisigSCWallet struct {
	ClientID        string `json:"client_id"`
	SignatureScheme string `json:"signature_scheme"`
	PublicKey       string `json:"public_key"`

	SignerThresholdIDs []string `json:"signer_threshold_ids"`
	SignerPublicKeys   []string `json:"signer_public_keys"`

	NumRequired int `json:"num_required"`
}

MultisigSCWallet --this should mimic MultisigWallet definition in MultiSig SC

type Network

type Network struct {
	Miners   []string `json:"miners"`
	Sharders []string `json:"sharders"`
}

func GetNetworkDetails

func GetNetworkDetails() (*Network, error)

type Transaction

type Transaction struct {
	// contains filtered or unexported fields
}

func NewMSTransaction

func NewMSTransaction(walletstr string, cb TransactionCallback) (*Transaction, error)

NewMSTransaction new transaction object for multisig operation

func (*Transaction) CreateReadPool

func (t *Transaction) CreateReadPool() (err error)

func (*Transaction) ExecuteFaucetSCWallet

func (t *Transaction) ExecuteFaucetSCWallet(walletStr string, methodName string, input []byte) error

ExecuteFaucetSCWallet impements the Faucet Smart contract for a given wallet

func (*Transaction) ExecuteSmartContract

func (t *Transaction) ExecuteSmartContract(address, methodName, jsoninput string, val int64) error

func (*Transaction) FinalizeAllocation

func (t *Transaction) FinalizeAllocation(allocID string) (err error)

FinalizeAllocation performs all required to finalize an expired allocation.

func (*Transaction) GetTransactionError

func (t *Transaction) GetTransactionError() string

func (*Transaction) GetTransactionHash

func (t *Transaction) GetTransactionHash() string

func (*Transaction) GetVerifyError

func (t *Transaction) GetVerifyError() string

func (*Transaction) GetVerifyOutput

func (t *Transaction) GetVerifyOutput() string

func (*Transaction) LockTokens

func (t *Transaction) LockTokens(val int64, durationHr int64, durationMin int) error

func (*Transaction) MienrSCUnlock

func (t *Transaction) MienrSCUnlock(nodeID, poolID string) (err error)

func (*Transaction) MinerSCLock

func (t *Transaction) MinerSCLock(nodeID string,
	lock common.Balance) (err error)

func (*Transaction) MinerSCSettings

func (t *Transaction) MinerSCSettings(info *MinerSCMinerInfo) (err error)

func (*Transaction) Output

func (t *Transaction) Output() []byte

func (*Transaction) ReadPoolLock

func (t *Transaction) ReadPoolLock(val int64, dur time.Duration) (err error)

func (*Transaction) ReadPoolUnlock

func (t *Transaction) ReadPoolUnlock(poolID string) (err error)

func (*Transaction) RegisterMultiSig

func (t *Transaction) RegisterMultiSig(walletstr string, mswallet string) error

RegisterMultiSig register a multisig wallet with the SC.

func (*Transaction) RegisterVote

func (t *Transaction) RegisterVote(signerwalletstr string, msvstr string) error

RegisterVote register a multisig wallet with the SC.

func (*Transaction) Send

func (t *Transaction) Send(toClientID string, val int64, desc string) error

func (*Transaction) SendWithSignatureHash

func (t *Transaction) SendWithSignatureHash(toClientID string, val int64, desc string, sig string, CreationDate int64, hash string) error

func (*Transaction) SetTransactionCallback

func (t *Transaction) SetTransactionCallback(cb TransactionCallback) error

func (*Transaction) SetTransactionFee

func (t *Transaction) SetTransactionFee(txnFee int64) error

func (*Transaction) SetTransactionHash

func (t *Transaction) SetTransactionHash(hash string) error

func (*Transaction) StakePoolUnlock

func (t *Transaction) StakePoolUnlock() (err error)

StakePoolUnlock unlock expired tokens of the write pool.

func (*Transaction) StoreData

func (t *Transaction) StoreData(data string) error

func (*Transaction) UnlockTokens

func (t *Transaction) UnlockTokens(poolID string) error

func (*Transaction) Verify

func (t *Transaction) Verify() error

func (*Transaction) VestingAdd

func (t *Transaction) VestingAdd(ar *VestingAddRequest,
	value common.Balance) (err error)

func (*Transaction) VestingDelete

func (t *Transaction) VestingDelete(poolID common.Key) (err error)

func (*Transaction) VestingStop

func (t *Transaction) VestingStop(sr *VestingStopRequest) (err error)

func (*Transaction) VestingTrigger

func (t *Transaction) VestingTrigger(poolID common.Key) (err error)

func (*Transaction) VestingUnlock

func (t *Transaction) VestingUnlock(poolID common.Key) (err error)

func (*Transaction) VestingUpdateConfig

func (t *Transaction) VestingUpdateConfig(vscc *VestingSCConfig) (err error)

func (*Transaction) WritePoolLock

func (t *Transaction) WritePoolLock(allocID string, val int64) (err error)

WritePoolLock lock token for the write pool.

type TransactionCallback

type TransactionCallback interface {
	OnTransactionComplete(t *Transaction, status int)
	OnVerifyComplete(t *Transaction, status int)
	OnAuthComplete(t *Transaction, status int)
}

TransactionCallback needs to be implemented by the caller for transaction related APIs

type TransactionScheme

type TransactionScheme interface {
	// SetTransactionCallback implements storing the callback
	// used to call after the transaction or verification is completed
	SetTransactionCallback(cb TransactionCallback) error
	// Send implements sending token to a given clientid
	Send(toClientID string, val int64, desc string) error
	// StoreData implements store the data to blockchain
	StoreData(data string) error
	// ExecuteSmartContract impements the Faucet Smart contract
	ExecuteSmartContract(address, methodName, jsoninput string, val int64) error
	// ExecuteFaucetSCWallet impements the Faucet Smart contract for a given wallet
	ExecuteFaucetSCWallet(walletStr string, methodName string, input []byte) error
	// GetTransactionHash implements retrieval of hash of the submitted transaction
	GetTransactionHash() string
	// LockTokens implements the lock token.
	LockTokens(val int64, durationHr int64, durationMin int) error
	// UnlockTokens implements unlocking of earlier locked tokens.
	UnlockTokens(poolID string) error
	//RegisterMultiSig registers a group wallet and subwallets with MultisigSC
	RegisterMultiSig(walletstr, mswallet string) error
	// SetTransactionHash implements verify a previous transation status
	SetTransactionHash(hash string) error
	// SetTransactionFee implements method to set the transaction fee
	SetTransactionFee(txnFee int64) error
	// Verify implements verify the transaction
	Verify() error
	// GetVerifyOutput implements the verifcation output from sharders
	GetVerifyOutput() string
	// GetTransactionError implements error string incase of transaction failure
	GetTransactionError() string
	// GetVerifyError implements error string incase of verify failure error
	GetVerifyError() string

	// Output of transaction.
	Output() []byte

	// vesting SC
	VestingTrigger(poolID common.Key) error
	VestingStop(sr *VestingStopRequest) error
	VestingUnlock(poolID common.Key) error
	VestingAdd(ar *VestingAddRequest, value common.Balance) error
	VestingDelete(poolID common.Key) error
	VestingUpdateConfig(vscc *VestingSCConfig) error

	MinerSCSettings(*MinerSCMinerInfo) error
	MinerSCLock(minerID string, lock common.Balance) error
	MienrSCUnlock(minerID, poolID string) error

	// CreateReadPool if missing or when wallet created.
	CreateReadPool() (err error)
	// ReadPoolLock lock token for the read pool.
	ReadPoolLock(val int64, dur time.Duration) (err error)
	// ReadPoolUnlock unlock expired tokens of the read pool.
	ReadPoolUnlock(poolID string) (err error)
	// WritePoolLock lock token for the write pool.
	WritePoolLock(allocID string, val int64) (err error)
	// StakePoolUnlock unlock expired tokens of stake pool by owner.
	StakePoolUnlock() (err error)
	// FinalizeAllocation performs all required on allocation expires.
	FinalizeAllocation(allocID string) (err error)
}

TransactionScheme implements few methods for block chain

func NewTransaction

func NewTransaction(cb TransactionCallback, txnFee int64) (TransactionScheme, error)

NewTransaction allocation new generic transaction object for any operation

type TransactionWithAuth

type TransactionWithAuth struct {
	// contains filtered or unexported fields
}

func (*TransactionWithAuth) CreateReadPool

func (ta *TransactionWithAuth) CreateReadPool() (err error)

func (*TransactionWithAuth) ExecuteFaucetSCWallet

func (ta *TransactionWithAuth) ExecuteFaucetSCWallet(walletStr string, methodName string, input []byte) error

ExecuteFaucetSCWallet impements the Faucet Smart contract for a given wallet

func (*TransactionWithAuth) ExecuteSmartContract

func (ta *TransactionWithAuth) ExecuteSmartContract(address, methodName, jsoninput string, val int64) error

func (*TransactionWithAuth) FinalizeAllocation

func (ta *TransactionWithAuth) FinalizeAllocation(allocID string) (err error)

FinalizeAllocation performs all required where allocation expired.

func (*TransactionWithAuth) GetTransactionError

func (ta *TransactionWithAuth) GetTransactionError() string

func (*TransactionWithAuth) GetTransactionHash

func (ta *TransactionWithAuth) GetTransactionHash() string

func (*TransactionWithAuth) GetVerifyError

func (ta *TransactionWithAuth) GetVerifyError() string

func (*TransactionWithAuth) GetVerifyOutput

func (ta *TransactionWithAuth) GetVerifyOutput() string

func (*TransactionWithAuth) LockTokens

func (ta *TransactionWithAuth) LockTokens(val int64, durationHr int64, durationMin int) error

func (*TransactionWithAuth) MienrSCUnlock

func (ta *TransactionWithAuth) MienrSCUnlock(nodeID, poolID string) (err error)

func (*TransactionWithAuth) MinerSCLock

func (ta *TransactionWithAuth) MinerSCLock(minerID string,
	lock common.Balance) (err error)

func (*TransactionWithAuth) MinerSCSettings

func (ta *TransactionWithAuth) MinerSCSettings(info *MinerSCMinerInfo) (err error)

func (*TransactionWithAuth) Output

func (ta *TransactionWithAuth) Output() []byte

func (*TransactionWithAuth) ReadPoolLock

func (ta *TransactionWithAuth) ReadPoolLock(val int64, dur time.Duration) (
	err error)

func (*TransactionWithAuth) ReadPoolUnlock

func (ta *TransactionWithAuth) ReadPoolUnlock(poolID string) (err error)

func (*TransactionWithAuth) RegisterMultiSig

func (ta *TransactionWithAuth) RegisterMultiSig(walletstr string, mswallet string) error

RegisterMultiSig register a multisig wallet with the SC.

func (*TransactionWithAuth) Send

func (ta *TransactionWithAuth) Send(toClientID string, val int64, desc string) error

func (*TransactionWithAuth) SetTransactionCallback

func (ta *TransactionWithAuth) SetTransactionCallback(cb TransactionCallback) error

func (*TransactionWithAuth) SetTransactionFee

func (ta *TransactionWithAuth) SetTransactionFee(txnFee int64) error

func (*TransactionWithAuth) SetTransactionHash

func (ta *TransactionWithAuth) SetTransactionHash(hash string) error

func (*TransactionWithAuth) StakePoolUnlock

func (ta *TransactionWithAuth) StakePoolUnlock() (err error)

StakePoolUnlock unlock expired tokens of stake pool by owner.

func (*TransactionWithAuth) StoreData

func (ta *TransactionWithAuth) StoreData(data string) error

func (*TransactionWithAuth) UnlockTokens

func (ta *TransactionWithAuth) UnlockTokens(poolID string) error

func (*TransactionWithAuth) Verify

func (ta *TransactionWithAuth) Verify() error

func (*TransactionWithAuth) VestingAdd

func (ta *TransactionWithAuth) VestingAdd(ar *VestingAddRequest,
	value common.Balance) (err error)

func (*TransactionWithAuth) VestingDelete

func (ta *TransactionWithAuth) VestingDelete(poolID common.Key) (err error)

func (*TransactionWithAuth) VestingStop

func (ta *TransactionWithAuth) VestingStop(sr *VestingStopRequest) (err error)

func (*TransactionWithAuth) VestingTrigger

func (ta *TransactionWithAuth) VestingTrigger(poolID common.Key) (err error)

func (*TransactionWithAuth) VestingUnlock

func (ta *TransactionWithAuth) VestingUnlock(poolID common.Key) (err error)

func (*TransactionWithAuth) VestingUpdateConfig

func (ta *TransactionWithAuth) VestingUpdateConfig(
	vscc *VestingSCConfig) (err error)

func (*TransactionWithAuth) WritePoolLock

func (ta *TransactionWithAuth) WritePoolLock(allocID string, val int64) (
	err error)

WritePoolLock lock token for the write pool.

type VestingAddRequest

type VestingAddRequest struct {
	Description  string           `json:"description"`  // allow empty
	StartTime    common.Timestamp `json:"start_time"`   //
	Duration     time.Duration    `json:"duration"`     //
	Destinations []*VestingDest   `json:"destinations"` //
}

type VestingClientList

type VestingClientList struct {
	Pools []common.Key `json:"pools"`
}

type VestingDest

type VestingDest struct {
	ID     common.Key     `json:"id"`     // destination ID
	Amount common.Balance `json:"amount"` // amount to vest for the destination
}

type VestingDestInfo

type VestingDestInfo struct {
	ID     common.Key       `json:"id"`     // identifier
	Wanted common.Balance   `json:"wanted"` // wanted amount for entire period
	Earned common.Balance   `json:"earned"` // can unlock
	Vested common.Balance   `json:"vested"` // already vested
	Last   common.Timestamp `json:"last"`   // last time unlocked
}

type VestingPoolInfo

type VestingPoolInfo struct {
	ID           common.Key         `json:"pool_id"`      // pool ID
	Balance      common.Balance     `json:"balance"`      // real pool balance
	Left         common.Balance     `json:"left"`         // owner can unlock
	Description  string             `json:"description"`  // description
	StartTime    common.Timestamp   `json:"start_time"`   // from
	ExpireAt     common.Timestamp   `json:"expire_at"`    // until
	Destinations []*VestingDestInfo `json:"destinations"` // receivers
	ClientID     common.Key         `json:"client_id"`    // owner
}

type VestingSCConfig

type VestingSCConfig struct {
	MinLock              common.Balance `json:"min_lock"`
	MinDuration          time.Duration  `json:"min_duration"`
	MaxDuration          time.Duration  `json:"max_duration"`
	MaxDestinations      int            `json:"max_destinations"`
	MaxDescriptionLength int            `json:"max_description_length"`
}

type VestingStopRequest

type VestingStopRequest struct {
	PoolID      common.Key `json:"pool_id"`
	Destination common.Key `json:"destination"`
}

type WalletCallback

type WalletCallback interface {
	OnWalletCreateComplete(status int, wallet string, err string)
}

WalletCallback needs to be implmented for wallet creation.

Jump to

Keyboard shortcuts

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