accounts

package
v0.3.7 Latest Latest
Warning

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

Go to latest
Published: Oct 13, 2022 License: Apache-2.0, BSD-2-Clause Imports: 18 Imported by: 4

Documentation

Index

Constants

View Source
const (
	// MinimumBaseTokensOnCommonAccount can't harvest the minimum
	MinimumBaseTokensOnCommonAccount = 3000

	ParamAgentID                      = "a"
	ParamAccountNonce                 = "n"
	ParamForceMinimumBaseTokens       = "f"
	ParamFoundrySN                    = "s"
	ParamFoundryOutputBin             = "b"
	ParamTokenScheme                  = "t"
	ParamSupplyDeltaAbs               = "d"
	ParamDestroyTokens                = "y"
	ParamStorageDepositAssumptionsBin = "u"
	ParamForceOpenAccount             = "c"
	ParamNFTIDs                       = "i"
	ParamNFTID                        = "z"
	ParamNFTData                      = "e"
	ParamBalance                      = "B"
	ParamNativeTokenID                = "N"
)
View Source
const ConstDepositFeeTmp = 1 * isc.Million

TODO this is just a temporary value, we need to make deposits fee constant across chains.

Variables

View Source
var (
	// Views
	ViewBalance                  = coreutil.ViewFunc("balance")
	ViewBalanceBaseToken         = coreutil.ViewFunc("balanceBaseToken")
	ViewBalanceNativeToken       = coreutil.ViewFunc("balanceNativeToken")
	ViewTotalAssets              = coreutil.ViewFunc("totalAssets")
	ViewAccounts                 = coreutil.ViewFunc("accounts")
	ViewGetAccountNonce          = coreutil.ViewFunc("getAccountNonce")
	ViewGetNativeTokenIDRegistry = coreutil.ViewFunc("getNativeTokenIDRegistry")
	ViewFoundryOutput            = coreutil.ViewFunc("foundryOutput")
	ViewAccountNFTs              = coreutil.ViewFunc("accountNFTs")
	ViewNFTData                  = coreutil.ViewFunc("nftData")

	// Funcs
	FuncDeposit             = coreutil.Func("deposit")
	FuncTransferAllowanceTo = coreutil.Func("transferAllowanceTo")
	FuncWithdraw            = coreutil.Func("withdraw")
	FuncHarvest             = coreutil.Func("harvest")
	FuncFoundryCreateNew    = coreutil.Func("foundryCreateNew")
	FuncFoundryDestroy      = coreutil.Func("foundryDestroy")
	FuncFoundryModifySupply = coreutil.Func("foundryModifySupply")
)
View Source
var (
	ErrNotEnoughFunds                       = coreerrors.Register("not enough funds").Create()
	ErrNotEnoughBaseTokensForStorageDeposit = coreerrors.Register("not enough base tokens for storage deposit").Create()
	ErrNotEnoughAllowance                   = coreerrors.Register("not enough allowance").Create()
	ErrBadAmount                            = coreerrors.Register("bad native asset amount").Create()
	ErrRepeatingFoundrySerialNumber         = coreerrors.Register("repeating serial number of the foundry").Create()
	ErrFoundryNotFound                      = coreerrors.Register("foundry not found").Create()
	ErrOverflow                             = coreerrors.Register("overflow in token arithmetics").Create()
	ErrInvalidNFTID                         = coreerrors.Register("invalid NFT ID").Create()
	ErrTooManyNFTsInAllowance               = coreerrors.Register("expected at most 1 NFT in allowance").Create()
	ErrNFTIDNotFound                        = coreerrors.Register("NFTID not found: %s")
)
View Source
var Contract = coreutil.NewContract(coreutil.CoreContractAccounts, "Chain account ledger contract")
View Source
var ErrStorageDepositAssumptionsWrong = xerrors.New("'storage deposit assumptions' parameter not specified or wrong")
View Source
var Processor = Contract.Processor(initialize,

	FuncDeposit.WithHandler(deposit),
	FuncFoundryCreateNew.WithHandler(foundryCreateNew),
	FuncFoundryDestroy.WithHandler(foundryDestroy),
	FuncFoundryModifySupply.WithHandler(foundryModifySupply),
	FuncHarvest.WithHandler(harvest),
	FuncTransferAllowanceTo.WithHandler(transferAllowanceTo),
	FuncWithdraw.WithHandler(withdraw),

	ViewAccountNFTs.WithHandler(viewAccountNFTs),
	ViewAccounts.WithHandler(viewAccounts),
	ViewBalance.WithHandler(viewBalance),
	ViewBalanceBaseToken.WithHandler(viewBalanceBaseToken),
	ViewBalanceNativeToken.WithHandler(viewBalanceNativeToken),
	ViewFoundryOutput.WithHandler(viewFoundryOutput),
	ViewGetAccountNonce.WithHandler(viewGetAccountNonce),
	ViewGetNativeTokenIDRegistry.WithHandler(viewGetNativeTokenIDRegistry),
	ViewNFTData.WithHandler(viewNFTData),
	ViewTotalAssets.WithHandler(viewTotalAssets),
)

Functions

func AccountExists added in v0.3.0

func AccountExists(state kv.KVStoreReader, agentID isc.AgentID) bool

func AddFoundryToAccount added in v0.3.0

func AddFoundryToAccount(state kv.KVStore, agentID isc.AgentID, sn uint32)

AddFoundryToAccount ads new foundry to the foundries controlled by the account

func AdjustAccountBaseTokens added in v0.3.0

func AdjustAccountBaseTokens(state kv.KVStore, account isc.AgentID, adjustment int64)

func CheckLedger added in v0.3.7

func CheckLedger(state kv.KVStore, checkpoint string)

func CreditNFTToAccount added in v0.3.0

func CreditNFTToAccount(state kv.KVStore, agentID isc.AgentID, nft *isc.NFT)

CreditNFTToAccount credits an NFT to the on chain ledger

func CreditToAccount

func CreditToAccount(state kv.KVStore, agentID isc.AgentID, assets *isc.FungibleTokens)

CreditToAccount brings new funds to the on chain ledger

func DebitFromAccount

func DebitFromAccount(state kv.KVStore, agentID isc.AgentID, assets *isc.FungibleTokens)

DebitFromAccount takes out assets balance the on chain ledger. If not enough it panics

func DebitNFTFromAccount added in v0.3.0

func DebitNFTFromAccount(state kv.KVStore, agentID isc.AgentID, id iotago.NFTID)

DebitNFTFromAccount removes an NFT from an account. if that account doesn't own the nft, it panics this will also delete the NFT data, as the NFT will be leaving the chain

func DeleteFoundryOutput added in v0.3.0

func DeleteFoundryOutput(state kv.KVStore, sn uint32)

DeleteFoundryOutput deletes foundry output from the map of all foundries

func DeleteNFTOutput added in v0.3.0

func DeleteNFTOutput(state kv.KVStore, id iotago.NFTID)

func DeleteNativeTokenOutput added in v0.3.0

func DeleteNativeTokenOutput(state kv.KVStore, tokenID iotago.NativeTokenID)

func GetAccountAssets added in v0.3.0

func GetAccountAssets(state kv.KVStoreReader, agentID isc.AgentID) *isc.FungibleTokens

GetAccountAssets returns all assets belonging to the agentID on the state

func GetAccountNFTs added in v0.3.0

func GetAccountNFTs(state kv.KVStoreReader, agentID isc.AgentID) []iotago.NFTID

GetAccountNFTs returns all NFTs belonging to the agentID on the state

func GetBaseTokensBalance added in v0.3.0

func GetBaseTokensBalance(state kv.KVStoreReader, agentID isc.AgentID) uint64

GetBaseTokensBalance return base tokens balance. 0 means it does not exist

func GetFoundryOutput added in v0.3.0

func GetFoundryOutput(state kv.KVStoreReader, sn uint32, chainID *isc.ChainID) (*iotago.FoundryOutput, uint32, uint16)

GetFoundryOutput returns foundry output, its block number and output index

func GetMaxAssumedNonce added in v0.2.0

func GetMaxAssumedNonce(state kv.KVStoreReader, callerAgentID isc.AgentID) uint64

GetMaxAssumedNonce is maintained for each caller with the purpose of replay protection of off-ledger requests

func GetNFTData added in v0.3.0

func GetNFTData(state kv.KVStoreReader, id iotago.NFTID) isc.NFT

func GetNFTOutput added in v0.3.0

func GetNFTOutput(state kv.KVStoreReader, id iotago.NFTID, chainID *isc.ChainID) (*iotago.NFTOutput, uint32, uint16)

func GetNativeTokenBalance added in v0.3.0

func GetNativeTokenBalance(state kv.KVStoreReader, agentID isc.AgentID, tokenID *iotago.NativeTokenID) *big.Int

GetNativeTokenBalance returns balance or nil if it does not exist

func GetNativeTokenBalanceTotal added in v0.3.0

func GetNativeTokenBalanceTotal(state kv.KVStoreReader, tokenID *iotago.NativeTokenID) *big.Int

func GetNativeTokenOutput added in v0.3.0

func GetNativeTokenOutput(state kv.KVStoreReader, tokenID *iotago.NativeTokenID, chainID *isc.ChainID) (*iotago.BasicOutput, uint32, uint16)

func GetStorageDepositAssumptions added in v0.3.0

func GetStorageDepositAssumptions(state kv.KVStoreReader) *transaction.StorageDepositAssumption

func GetTotalL2Assets added in v0.3.0

func GetTotalL2Assets(state kv.KVStoreReader) *isc.FungibleTokens

func GetTotalL2NFTs added in v0.3.0

func GetTotalL2NFTs(state kv.KVStoreReader) map[iotago.NFTID]bool

func HasEnoughForAllowance added in v0.3.0

func HasEnoughForAllowance(state kv.KVStoreReader, agentID isc.AgentID, allowance *isc.Allowance) bool

GetNativeTokenBalance returns balance or nil if it does not exist

func HasFoundry added in v0.3.0

func HasFoundry(state kv.KVStoreReader, agentID isc.AgentID, sn uint32) bool

HasFoundry checks if specific account owns the foundry

func MoveBetweenAccounts

func MoveBetweenAccounts(state kv.KVStore, fromAgentID, toAgentID isc.AgentID, fungibleTokens *isc.FungibleTokens, nfts []iotago.NFTID) bool

MoveBetweenAccounts moves assets between on-chain accounts. Returns if it was a success (= enough funds in the source)

func MoveFoundryBetweenAccounts added in v0.3.0

func MoveFoundryBetweenAccounts(state kv.KVStore, agentIDFrom, agentIDTo isc.AgentID, sn uint32)

MoveFoundryBetweenAccounts changes ownership of the foundry

func MustMoveBetweenAccounts added in v0.3.0

func MustMoveBetweenAccounts(state kv.KVStore, fromAgentID, toAgentID isc.AgentID, fungibleTokens *isc.FungibleTokens, nfts []iotago.NFTID)

func NFTMapEqual added in v0.3.0

func NFTMapEqual(a, b map[iotago.NFTID]bool) bool

func SaveFoundryOutput added in v0.3.0

func SaveFoundryOutput(state kv.KVStore, f *iotago.FoundryOutput, blockIndex uint32, outputIndex uint16)

SaveFoundryOutput stores foundry output into the map of all foundry outputs (compressed form)

func SaveMaxAssumedNonce added in v0.3.0

func SaveMaxAssumedNonce(state kv.KVStore, callerAgentID isc.AgentID, nonce uint64)

func SaveNFTOutput added in v0.3.0

func SaveNFTOutput(state kv.KVStore, out *iotago.NFTOutput, blockIndex uint32, outputIndex uint16)

SaveNFTOutput map tokenID -> foundryRec

func SaveNativeTokenOutput added in v0.3.0

func SaveNativeTokenOutput(state kv.KVStore, out *iotago.BasicOutput, blockIndex uint32, outputIndex uint16)

SaveNativeTokenOutput map tokenID -> foundryRec

Types

type NFTOutputRec added in v0.3.0

type NFTOutputRec struct {
	Output      *iotago.NFTOutput
	BlockIndex  uint32
	OutputIndex uint16
}

region NFT outputs /////////////////////////////////

func NFTOutputRecFromMarshalUtil added in v0.3.0

func NFTOutputRecFromMarshalUtil(mu *marshalutil.MarshalUtil) (*NFTOutputRec, error)

func (*NFTOutputRec) Bytes added in v0.3.0

func (r *NFTOutputRec) Bytes() []byte

func (*NFTOutputRec) String added in v0.3.0

func (r *NFTOutputRec) String() string

Jump to

Keyboard shortcuts

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