Documentation
¶
Index ¶
- Constants
- Variables
- func ComputeRoundHash(nodeId crypto.Hash, number uint64, snapshots []*Snapshot) (uint64, uint64, crypto.Hash)
- func EncodeCustodianNode(custodian, payee *Address, signerSpend, payeeSpend, custodianSpend *crypto.Key, ...) []byte
- type Address
- type AggregatedSignature
- type Asset
- type AssetReader
- type CustodianNode
- type CustodianReader
- type CustodianUpdateRequest
- type DataStore
- type Decoder
- func (dec *Decoder) DecodeSnapshotWithTopo() (*SnapshotWithTopologicalOrder, error)
- func (dec *Decoder) DecodeTransaction() (*SignedTransaction, error)
- func (dec *Decoder) Read(b []byte) error
- func (dec *Decoder) ReadAggregatedSignature() (*AggregatedSignature, error)
- func (dec *Decoder) ReadByte() (byte, error)
- func (dec *Decoder) ReadBytes() ([]byte, error)
- func (dec *Decoder) ReadCosiSignature() (*crypto.CosiSignature, error)
- func (dec *Decoder) ReadInput() (*Input, error)
- func (dec *Decoder) ReadInt() (int, error)
- func (dec *Decoder) ReadInteger() (Integer, error)
- func (dec *Decoder) ReadMagic() (bool, error)
- func (dec *Decoder) ReadOutput() (*Output, error)
- func (dec *Decoder) ReadRoundReferences() (*RoundLink, error)
- func (dec *Decoder) ReadSignatures() (map[uint16]*crypto.Signature, error)
- func (dec *Decoder) ReadUint16() (uint16, error)
- func (dec *Decoder) ReadUint32() (uint32, error)
- func (dec *Decoder) ReadUint64() (uint64, error)
- type DepositData
- type Encoder
- func (enc *Encoder) Bytes() []byte
- func (enc *Encoder) EncodeAggregatedSignature(js *AggregatedSignature)
- func (enc *Encoder) EncodeCosiSignature(s *crypto.CosiSignature)
- func (enc *Encoder) EncodeInput(in *Input)
- func (enc *Encoder) EncodeOutput(o *Output)
- func (enc *Encoder) EncodeRoundReferences(r *RoundLink)
- func (enc *Encoder) EncodeSignatures(sm map[uint16]*crypto.Signature)
- func (enc *Encoder) EncodeSnapshotPayload(s *Snapshot) []byte
- func (enc *Encoder) EncodeSnapshotWithTopo(s *SnapshotWithTopologicalOrder) []byte
- func (enc *Encoder) EncodeTransaction(signed *SignedTransaction) []byte
- func (enc *Encoder) Write(b []byte)
- func (enc *Encoder) WriteByte(b byte) error
- func (enc *Encoder) WriteInt(d int)
- func (enc *Encoder) WriteInteger(d Integer)
- func (enc *Encoder) WriteUint16(d uint16)
- func (enc *Encoder) WriteUint32(d uint32)
- func (enc *Encoder) WriteUint64(d uint64)
- type Genesis
- type GhostLocker
- type Input
- type Integer
- func (x Integer) Add(y Integer) (v Integer)
- func (x Integer) Cmp(y Integer) int
- func (x Integer) Count(y Integer) uint64
- func (x Integer) Div(y int) (v Integer)
- func (x Integer) MarshalJSON() ([]byte, error)
- func (x Integer) Mul(y int) (v Integer)
- func (x Integer) Ration(y Integer) (v RationalNumber)
- func (x Integer) Sign() int
- func (x Integer) String() string
- func (x Integer) Sub(y Integer) (v Integer)
- func (x *Integer) UnmarshalJSON(b []byte) error
- type MintData
- type MintDistribution
- type Node
- type NodeReader
- type Output
- type RationalNumber
- type Round
- type RoundLink
- type RoundSpace
- type Script
- type SignedTransaction
- func (signed *SignedTransaction) AggregateSign(reader UTXOKeysReader, accounts [][]*Address, seed []byte) error
- func (tx *SignedTransaction) AsVersioned() *VersionedTransaction
- func (tx *SignedTransaction) GetExtraLimit() int
- func (signed *SignedTransaction) SignInput(reader UTXOKeysReader, index int, accounts []*Address) error
- func (signed *SignedTransaction) SignRaw(key crypto.Key) error
- func (signed *SignedTransaction) SignUTXO(utxo *UTXO, accounts []*Address) error
- func (tx *SignedTransaction) TransactionType() uint8
- type Snapshot
- type SnapshotWithTopologicalOrder
- type SnapshotWork
- type Transaction
- func (tx *Transaction) AddDepositInput(data *DepositData)
- func (tx *Transaction) AddInput(hash crypto.Hash, index uint)
- func (tx *Transaction) AddOutputWithType(ot uint8, accounts []*Address, s Script, amount Integer, seed []byte)
- func (tx *Transaction) AddRandomScriptOutput(accounts []*Address, s Script, amount Integer)
- func (tx *Transaction) AddScriptOutput(accounts []*Address, s Script, amount Integer, seed []byte)
- func (tx *Transaction) AddUniversalMintInput(batch uint64, amount Integer)
- func (tx *Transaction) AsVersioned() *VersionedTransaction
- func (tx *Transaction) DepositData() *DepositData
- func (tx *Transaction) NodeTransactionExtraAsSigner() *Address
- func (tx *Transaction) ViewGhostKey(a *crypto.Key) []*Output
- type TransactionReader
- type UTXO
- type UTXOKeys
- type UTXOKeysReader
- type UTXOLockReader
- type UTXOLocker
- type UTXOWithLock
- type VersionedTransaction
- func (tx *VersionedTransaction) LockInputs(locker UTXOLocker, fork bool) error
- func (ver *VersionedTransaction) Marshal() []byte
- func (ver *VersionedTransaction) PayloadHash() crypto.Hash
- func (ver *VersionedTransaction) PayloadMarshal() []byte
- func (tx *VersionedTransaction) UnspentOutputs() []*UTXOWithLock
- func (ver *VersionedTransaction) Validate(store DataStore, snapTime uint64, fork bool) error
- type WithdrawalData
Constants ¶
View Source
const ( MinimumEncodingVersion = 0x1 MaximumEncodingInt = 0xFFFF AggregatedSignaturePrefix = 0xFF01 AggregatedSignatureSparseMask = byte(0x01) AggregatedSignatureOrdinaryMask = byte(0x00) )
View Source
const ( NodeStatePledging = "PLEDGING" NodeStateAccepted = "ACCEPTED" NodeStateRemoved = "REMOVED" NodeStateCancelled = "CANCELLED" )
View Source
const ( Operator0 = 0x00 Operator64 = 0x40 OperatorSum = 0xfe OperatorCmp = 0xff )
View Source
const ( TxVersionHashSignature = 0x05 ExtraSizeGeneralLimit = 256 ExtraSizeStorageStep = 1024 ExtraSizeStorageCapacity = 1024 * 1024 * 4 ExtraStoragePriceStep = "0.0001" SliceCountLimit = 256 ReferencesCountLimit = 2 OutputTypeScript = 0x00 OutputTypeWithdrawalSubmit = 0xa1 OutputTypeNodePledge = 0xa3 OutputTypeNodeAccept = 0xa4 OutputTypeNodeRemove = 0xa6 OutputTypeWithdrawalClaim = 0xa9 OutputTypeNodeCancel = 0xaa OutputTypeCustodianUpdateNodes = 0xb1 OutputTypeCustodianSlashNodes = 0xb2 TransactionTypeScript = 0x00 TransactionTypeMint = 0x01 TransactionTypeDeposit = 0x02 TransactionTypeWithdrawalSubmit = 0x03 TransactionTypeWithdrawalClaim = 0x05 TransactionTypeNodePledge = 0x06 TransactionTypeNodeAccept = 0x07 TransactionTypeNodeRemove = 0x09 TransactionTypeNodeCancel = 0x12 TransactionTypeCustodianUpdateNodes = 0x13 TransactionTypeCustodianSlashNodes = 0x14 TransactionTypeUnknown = 0xff )
View Source
const MainAddressPrefix = "XIN"
View Source
const Precision = 8
View Source
const (
SnapshotVersionCommonEncoding = 2
)
Variables ¶
View Source
var ( XINAssetId = crypto.Sha256Hash([]byte("c94ac88f-4671-3976-b60a-09064f1811e8")) BitcoinAssetId = crypto.Sha256Hash([]byte("c6d0c728-2624-429b-8e0d-d9d19b6592fa")) EthereumAssetId = crypto.Sha256Hash([]byte("43d61dcd-e413-450d-80b8-101d5e903357")) BOXAssetId = crypto.Sha256Hash([]byte("f5ef6b5d-cc5a-3d90-b2c0-a2fd386e7a3c")) MOBAssetId = crypto.Sha256Hash([]byte("eea900a8-b327-488c-8d8d-1428702fe240")) USDTEthereumAssetId = crypto.Sha256Hash([]byte("4d8c508b-91c5-375b-92b0-ee702ed2dac5")) USDTTronAssetId = crypto.Sha256Hash([]byte("b91e18ff-a9ae-3dc7-8679-e935d9a4b34b")) PandoUSDAssetId = crypto.Sha256Hash([]byte("31d2ea9c-95eb-3355-b65b-ba096853bc18")) USDCAssetId = crypto.Sha256Hash([]byte("9b180ab6-6abe-3dc0-a13f-04169eb34bfa")) EOSAssetId = crypto.Sha256Hash([]byte("6cfe566e-4aad-470b-8c9a-2fd35b49c68d")) SOLAssetId = crypto.Sha256Hash([]byte("64692c23-8971-4cf4-84a7-4dd1271dd887")) UNIAssetId = crypto.Sha256Hash([]byte("a31e847e-ca87-3162-b4d1-322bc552e831")) DOGEAssetId = crypto.Sha256Hash([]byte("6770a1e5-6086-44d5-b60f-545f9d9e8ffd")) XINAsset = &Asset{Chain: EthereumAssetId, AssetKey: "0xa974c709cfb4566686553a20790685a47aceaa33"} )
View Source
var (
KernelNodePledgeAmount = NewInteger(13439)
)
View Source
var OneRat = NewInteger(1).Ration(NewInteger(1))
View Source
var Zero = NewInteger(0)
Functions ¶
func ComputeRoundHash ¶ added in v0.17.7
Types ¶
type Address ¶
type Address struct { PrivateSpendKey crypto.Key PrivateViewKey crypto.Key PublicSpendKey crypto.Key PublicViewKey crypto.Key }
func NewAddressFromSeed ¶
func NewAddressFromString ¶
func (Address) MarshalJSON ¶
func (*Address) UnmarshalJSON ¶
type AggregatedSignature ¶ added in v0.12.18
type AssetReader ¶ added in v0.17.0
type CustodianNode ¶ added in v0.16.0
type CustodianReader ¶ added in v0.16.0
type CustodianReader interface {
ReadCustodian(ts uint64) (*CustodianUpdateRequest, error)
}
type CustodianUpdateRequest ¶ added in v0.16.0
type CustodianUpdateRequest struct { Custodian *Address Nodes []*CustodianNode Signature *crypto.Signature Transaction crypto.Hash Timestamp uint64 }
func ParseCustodianUpdateNodesExtra ¶ added in v0.16.0
func ParseCustodianUpdateNodesExtra(extra []byte, genesis bool) (*CustodianUpdateRequest, error)
type DataStore ¶
type DataStore interface { TransactionReader UTXOLockReader UTXOLocker GhostLocker NodeReader CustodianReader AssetReader }
type Decoder ¶ added in v0.12.1
type Decoder struct {
// contains filtered or unexported fields
}
func NewDecoder ¶ added in v0.12.1
func NewMinimumDecoder ¶ added in v0.14.0
func (*Decoder) DecodeSnapshotWithTopo ¶ added in v0.14.0
func (dec *Decoder) DecodeSnapshotWithTopo() (*SnapshotWithTopologicalOrder, error)
func (*Decoder) DecodeTransaction ¶ added in v0.12.1
func (dec *Decoder) DecodeTransaction() (*SignedTransaction, error)
func (*Decoder) ReadAggregatedSignature ¶ added in v0.12.18
func (dec *Decoder) ReadAggregatedSignature() (*AggregatedSignature, error)
func (*Decoder) ReadCosiSignature ¶ added in v0.14.0
func (dec *Decoder) ReadCosiSignature() (*crypto.CosiSignature, error)
func (*Decoder) ReadInteger ¶ added in v0.12.1
func (*Decoder) ReadOutput ¶ added in v0.12.1
func (*Decoder) ReadRoundReferences ¶ added in v0.15.0
func (*Decoder) ReadSignatures ¶ added in v0.12.1
func (*Decoder) ReadUint16 ¶ added in v0.12.1
func (*Decoder) ReadUint32 ¶ added in v0.15.0
func (*Decoder) ReadUint64 ¶ added in v0.12.1
type DepositData ¶
type DepositData struct { Chain crypto.Hash AssetKey string Transaction string Index uint64 Amount Integer }
func (*DepositData) Asset ¶ added in v0.1.14
func (d *DepositData) Asset() *Asset
func (*DepositData) UniqueKey ¶ added in v0.1.4
func (d *DepositData) UniqueKey() crypto.Hash
type Encoder ¶ added in v0.12.1
type Encoder struct {
// contains filtered or unexported fields
}
func NewEncoder ¶ added in v0.12.1
func NewEncoder() *Encoder
func NewMinimumEncoder ¶ added in v0.14.0
func NewMinimumEncoder() *Encoder
func (*Encoder) EncodeAggregatedSignature ¶ added in v0.12.18
func (enc *Encoder) EncodeAggregatedSignature(js *AggregatedSignature)
func (*Encoder) EncodeCosiSignature ¶ added in v0.14.0
func (enc *Encoder) EncodeCosiSignature(s *crypto.CosiSignature)
func (*Encoder) EncodeInput ¶ added in v0.12.1
func (*Encoder) EncodeOutput ¶ added in v0.12.1
func (*Encoder) EncodeRoundReferences ¶ added in v0.15.0
func (*Encoder) EncodeSignatures ¶ added in v0.12.1
func (*Encoder) EncodeSnapshotPayload ¶ added in v0.14.0
func (*Encoder) EncodeSnapshotWithTopo ¶ added in v0.14.0
func (enc *Encoder) EncodeSnapshotWithTopo(s *SnapshotWithTopologicalOrder) []byte
func (*Encoder) EncodeTransaction ¶ added in v0.12.1
func (enc *Encoder) EncodeTransaction(signed *SignedTransaction) []byte
func (*Encoder) WriteInteger ¶ added in v0.12.1
func (*Encoder) WriteUint16 ¶ added in v0.12.1
func (*Encoder) WriteUint32 ¶ added in v0.15.0
func (*Encoder) WriteUint64 ¶ added in v0.12.1
type Genesis ¶ added in v0.17.7
type Genesis struct { Epoch int64 `json:"epoch"` Nodes []*struct { Signer *Address `json:"signer"` Payee *Address `json:"payee"` Custodian *Address `json:"custodian"` Balance Integer `json:"balance"` } `json:"nodes"` Custodian *Address `json:"custodian"` }
func ReadGenesis ¶ added in v0.17.7
func (*Genesis) BuildSnapshots ¶ added in v0.17.7
func (gns *Genesis) BuildSnapshots() ([]*Round, []*SnapshotWithTopologicalOrder, []*VersionedTransaction, error)
func (*Genesis) EpochTimestamp ¶ added in v0.17.7
type GhostLocker ¶ added in v0.16.0
type Integer ¶
type Integer struct {
// contains filtered or unexported fields
}
func GetAssetCapacity ¶ added in v0.17.1
func NewInteger ¶
func NewIntegerFromString ¶
func (Integer) MarshalJSON ¶
func (Integer) Ration ¶ added in v0.11.0
func (x Integer) Ration(y Integer) (v RationalNumber)
func (*Integer) UnmarshalJSON ¶
type MintData ¶ added in v0.1.1
func (*MintData) Distribute ¶ added in v0.1.1
func (m *MintData) Distribute(tx crypto.Hash) *MintDistribution
type MintDistribution ¶ added in v0.1.1
func UnmarshalMintDistribution ¶ added in v0.14.0
func UnmarshalMintDistribution(b []byte) (*MintDistribution, error)
func (*MintDistribution) Marshal ¶ added in v0.14.0
func (m *MintDistribution) Marshal() []byte
type Node ¶
type NodeReader ¶
type RationalNumber ¶ added in v0.11.0
type RationalNumber struct {
// contains filtered or unexported fields
}
func (RationalNumber) Cmp ¶ added in v0.11.0
func (r RationalNumber) Cmp(x RationalNumber) int
func (RationalNumber) Product ¶ added in v0.11.0
func (r RationalNumber) Product(x Integer) (v Integer)
type Round ¶
type Round struct { Hash crypto.Hash NodeId crypto.Hash Number uint64 Timestamp uint64 References *RoundLink }
func UnmarshalRound ¶ added in v0.14.0
type RoundSpace ¶ added in v0.14.0
type Script ¶
type Script []uint8
func NewThresholdScript ¶ added in v0.1.1
func (Script) MarshalJSON ¶
func (*Script) UnmarshalJSON ¶
func (Script) VerifyFormat ¶
type SignedTransaction ¶
type SignedTransaction struct { Transaction AggregatedSignature *AggregatedSignature SignaturesMap []map[uint16]*crypto.Signature }
func (*SignedTransaction) AggregateSign ¶ added in v0.12.18
func (signed *SignedTransaction) AggregateSign(reader UTXOKeysReader, accounts [][]*Address, seed []byte) error
func (*SignedTransaction) AsVersioned ¶ added in v0.14.0
func (tx *SignedTransaction) AsVersioned() *VersionedTransaction
func (*SignedTransaction) GetExtraLimit ¶ added in v0.17.5
func (tx *SignedTransaction) GetExtraLimit() int
func (*SignedTransaction) SignInput ¶
func (signed *SignedTransaction) SignInput(reader UTXOKeysReader, index int, accounts []*Address) error
func (*SignedTransaction) SignUTXO ¶ added in v0.5.10
func (signed *SignedTransaction) SignUTXO(utxo *UTXO, accounts []*Address) error
func (*SignedTransaction) TransactionType ¶ added in v0.2.0
func (tx *SignedTransaction) TransactionType() uint8
type Snapshot ¶
type Snapshot struct { Version uint8 NodeId crypto.Hash References *RoundLink RoundNumber uint64 Timestamp uint64 Signature *crypto.CosiSignature Hash crypto.Hash Transactions []crypto.Hash }
func (*Snapshot) AddSoleTransaction ¶ added in v0.14.0
func (*Snapshot) PayloadHash ¶
func (*Snapshot) SoleTransaction ¶ added in v0.14.0
func (*Snapshot) VersionedMarshal ¶ added in v0.14.0
type SnapshotWithTopologicalOrder ¶
func UnmarshalVersionedSnapshot ¶ added in v0.14.0
func UnmarshalVersionedSnapshot(b []byte) (*SnapshotWithTopologicalOrder, error)
func (*SnapshotWithTopologicalOrder) VersionedMarshal ¶ added in v0.14.0
func (s *SnapshotWithTopologicalOrder) VersionedMarshal() []byte
type SnapshotWork ¶ added in v0.11.7
type Transaction ¶
type Transaction struct { Version uint8 Asset crypto.Hash Inputs []*Input Outputs []*Output References []crypto.Hash Extra []byte }
func NewTransactionV5 ¶ added in v0.17.0
func NewTransactionV5(asset crypto.Hash) *Transaction
func (*Transaction) AddDepositInput ¶
func (tx *Transaction) AddDepositInput(data *DepositData)
func (*Transaction) AddOutputWithType ¶ added in v0.2.0
func (*Transaction) AddRandomScriptOutput ¶ added in v0.2.0
func (tx *Transaction) AddRandomScriptOutput(accounts []*Address, s Script, amount Integer)
func (*Transaction) AddScriptOutput ¶
func (tx *Transaction) AddScriptOutput(accounts []*Address, s Script, amount Integer, seed []byte)
func (*Transaction) AddUniversalMintInput ¶ added in v0.16.0
func (tx *Transaction) AddUniversalMintInput(batch uint64, amount Integer)
func (*Transaction) AsVersioned ¶ added in v0.14.0
func (tx *Transaction) AsVersioned() *VersionedTransaction
func (*Transaction) DepositData ¶ added in v0.12.0
func (tx *Transaction) DepositData() *DepositData
func (*Transaction) NodeTransactionExtraAsSigner ¶ added in v0.17.5
func (tx *Transaction) NodeTransactionExtraAsSigner() *Address
func (*Transaction) ViewGhostKey ¶
func (tx *Transaction) ViewGhostKey(a *crypto.Key) []*Output
type TransactionReader ¶ added in v0.17.1
type TransactionReader interface {
ReadTransaction(hash crypto.Hash) (*VersionedTransaction, string, error)
}
type UTXOKeysReader ¶ added in v0.12.18
type UTXOLockReader ¶ added in v0.12.18
type UTXOLockReader interface { ReadUTXOLock(hash crypto.Hash, index uint) (*UTXOWithLock, error) ReadDepositLock(deposit *DepositData) (crypto.Hash, error) ReadLastMintDistribution(batch uint64) (*MintDistribution, error) }
type UTXOLocker ¶
type UTXOWithLock ¶
func UnmarshalUTXO ¶ added in v0.14.0
func UnmarshalUTXO(b []byte) (*UTXOWithLock, error)
func (*UTXOWithLock) Marshal ¶ added in v0.14.0
func (out *UTXOWithLock) Marshal() []byte
type VersionedTransaction ¶ added in v0.1.14
type VersionedTransaction struct { SignedTransaction // contains filtered or unexported fields }
func UnmarshalVersionedTransaction ¶ added in v0.1.14
func UnmarshalVersionedTransaction(val []byte) (*VersionedTransaction, error)
func (*VersionedTransaction) LockInputs ¶ added in v0.1.14
func (tx *VersionedTransaction) LockInputs(locker UTXOLocker, fork bool) error
func (*VersionedTransaction) Marshal ¶ added in v0.1.14
func (ver *VersionedTransaction) Marshal() []byte
func (*VersionedTransaction) PayloadHash ¶ added in v0.1.14
func (ver *VersionedTransaction) PayloadHash() crypto.Hash
func (*VersionedTransaction) PayloadMarshal ¶ added in v0.1.14
func (ver *VersionedTransaction) PayloadMarshal() []byte
func (*VersionedTransaction) UnspentOutputs ¶ added in v0.1.14
func (tx *VersionedTransaction) UnspentOutputs() []*UTXOWithLock
type WithdrawalData ¶ added in v0.2.0
Click to show internal directories.
Click to hide internal directories.