gadk

package module
v0.0.0-...-3609956 Latest Latest
Warning

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

Go to latest
Published: Mar 9, 2021 License: MIT Imports: 16 Imported by: 5

README

GoDoc GitHub license Golangci lint Tests

gadk

Client library for the ADK.

Install

You will need C compiler (gcc for linux, mingw for windows) to compile PoW routine in C.

Examples


import "github.com/AidosKuneen/gadk"

//Trits
tritsFrom:=[]int8{1,-1,1,0,1,1,0,-1,0}
trits,err:=gadk.ToTrits(tritsFrom)

//Trytes
trytes:=trits.Trytes()
trytesFrom:="ABCDEAAC9ACB9PO..."
trytes2,err:=gadk.ToTrytes(trytesFrom)

//Hash
hash:=trytes.Hash()

//API
api := gadk.NewAPI("http://localhost:14265", nil)
resp, err := api.FindTransactions([]Trytes{"DEXRPL...SJRU"})

///Address
index:=0
security:=2
adr,err:=gadk.NewAddress(trytes,index,seciruty) //without checksum.
adrWithChecksum := adr.WithChecksum() //adrWithChecksum is trytes type.

//transaction
tx,err:=gadk.NewTransaction(trytes)
if tx.HasValidNonce(){...}
trytes2:=tx.trytes()

//create signature
key := gadk.NewKey(seed, index, security)
norm := bundleHash.Normalize()
sign := gadk.Sign(norm[:27], key[:6561/3])

//validate signature
if gadk.ValidateSig(adr, []Trytes{sign}, bundleHash) {...}

//send
trs := []gadk.Transfer{
	gadk.Transfer{
		Address: "KTXF...QTIWOWTY",
		Value:   20,
		Tag: "MOUDAMEPO",
	},
}
_, pow := gadk.GetBestPow()
bdl, err = gadk.Send(api, seed, security, trs, pow)

PoW(Proof of Work) Benchmarking

You can benchmark PoWs(by C,Go,SSE) by

    $ go test -v -run Pow

or if you want to add OpenCL PoW,

    $ go test -tags=gpu -v -run Pow

then it outputs like:

	$ go test -tags=gpu -v -run Pow
=== RUN   TestPowC
--- PASS: TestPowC (15.93s)
	pow_c_test.go:50: 1550 kH/sec on C PoW
=== RUN   TestPowCL
--- PASS: TestPowCL (17.45s)
	pow_cl_test.go:49: 332 kH/sec on GPU PoW
=== RUN   TestPowGo
--- PASS: TestPowGo (21.21s)
	pow_go_test.go:50: 1164 kH/sec on Go PoW
=== RUN   TestPowSSE
--- PASS: TestPowSSE (13.41s)
	pow_sse_test.go:52: 2292 kH/sec on SSE PoW

Documentation

Index

Constants

View Source
const (
	TryteAlphabet      = "9ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	MinTryteValue      = -13
	MaxTryteValue      = 13
	SignatureSize      = 6561
	HashSize           = 243
	MinWeightMagnitude = 18 //must be 18.
	Depth              = 3
)

Various constants for gadk.

View Source
const (
	Ki = 1000
	Mi = 1000000
	Gi = 1000000000
	Ti = 1000000000000
	Pi = 1000000000000000
)

Units for adk token.

View Source
const (
	SignatureMessageFragmentTrinaryOffset = 0
	SignatureMessageFragmentTrinarySize   = 6561
	AddressTrinaryOffset                  = SignatureMessageFragmentTrinaryOffset + SignatureMessageFragmentTrinarySize
	AddressTrinarySize                    = 243
	ValueTrinaryOffset                    = AddressTrinaryOffset + AddressTrinarySize
	ValueTrinarySize                      = 81
	TagTrinaryOffset                      = ValueTrinaryOffset + ValueTrinarySize
	TagTrinarySize                        = 81
	TimestampTrinaryOffset                = TagTrinaryOffset + TagTrinarySize
	TimestampTrinarySize                  = 27
	CurrentIndexTrinaryOffset             = TimestampTrinaryOffset + TimestampTrinarySize
	CurrentIndexTrinarySize               = 27
	LastIndexTrinaryOffset                = CurrentIndexTrinaryOffset + CurrentIndexTrinarySize
	LastIndexTrinarySize                  = 27
	BundleTrinaryOffset                   = LastIndexTrinaryOffset + LastIndexTrinarySize
	BundleTrinarySize                     = 243
	TrunkTransactionTrinaryOffset         = BundleTrinaryOffset + BundleTrinarySize
	TrunkTransactionTrinarySize           = 243
	BranchTransactionTrinaryOffset        = TrunkTransactionTrinaryOffset + TrunkTransactionTrinarySize
	BranchTransactionTrinarySize          = 243
	NonceTrinaryOffset                    = BranchTransactionTrinaryOffset + BranchTransactionTrinarySize
	NonceTrinarySize                      = 243
)

Trinary sizes and offsets of a transaction

Variables

View Source
var (

	//EmptyHash represents empty hash.
	EmptyHash Trytes = "999999999999999999999999999999999999999999999999999999999999999999999999999999999"
	//EmptyAddress represents empty address.
	EmptyAddress Address = "999999999999999999999999999999999999999999999999999999999999999999999999999999999"
)
View Source
var (
	ErrSeedTritsLength = errors.New("seed trit slice should be HashSize entries long")
	ErrKeyTritsLength  = errors.New("key trit slice should be a multiple of HashSize*27 entries long")
)

errors used in sign.

View Source
var (
	ErrInvalidAddressTrytes = errors.New("addresses without checksum are 81 trytes in length")
	ErrInvalidAddressTrits  = errors.New("addresses without checksum are 243 trits in length")
)

Error types for address.

View Source
var (
	ErrInvalidTransactionType = errors.New("invalid transaction type")
	ErrInvalidTransactionHash = errors.New("invalid transaction hash")
	ErrInvalidTransaction     = errors.New("malformed transaction")
)

errors for tx.

View Source
var (

	//PowProcs is number of concurrencies.
	//default is NumCPU()-1.
	PowProcs int
)

Functions

func GetInputs

func GetInputs(api *API, seed Trytes, start, end int, threshold int64, security int) ([]AddressInfo, Balances, error)

GetInputs gets all possible inputs of a seed and returns them with the total balance. end must be under start+500.

func GetUsedAddress

func GetUsedAddress(api *API, seed Trytes, security int) (Address, []Address, error)

GetUsedAddress generates a new address which is not found in the Mesh. and returns its new address and used addresses.

func IsValidSig

func IsValidSig(expectedAddress Address, signatureFragments []Trytes, bundleHash Trytes) bool

IsValidSig validates signatureFragment.

func IsValidTrit

func IsValidTrit(t int8) error

IsValidTrit returns true if t is valid trit.

func IsValidTryte

func IsValidTryte(t rune) error

IsValidTryte returns nil if t is valid trytes.

func SendTrytes

func SendTrytes(api *API, depth int64, trytes []Transaction, mwm int64, pow PowFunc) error

SendTrytes does attachToMesh and finally, it broadcasts the transactions.

Types

type API

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

API is for calling APIs.

func NewAPI

func NewAPI(endpoint string, c *http.Client) *API

NewAPI takes an (optional) endpoint and optional http.Client and returns an API struct. If an empty endpoint is supplied, then "http://localhost:14265" is used.

func (*API) AddNeighbors

func (api *API) AddNeighbors(uris []string) (*AddNeighborsResponse, error)

AddNeighbors calls AddNeighbors API.

func (*API) AttachToMesh

func (api *API) AttachToMesh(att *AttachToMeshRequest) (*AttachToMeshResponse, error)

AttachToMesh calls AttachToMesh API.

func (*API) Balances

func (api *API) Balances(adr []Address) (Balances, error)

Balances call GetBalances API and returns address-balance pair struct.

func (*API) BroadcastTransactions

func (api *API) BroadcastTransactions(trytes []Transaction) error

BroadcastTransactions calls BroadcastTransactions API.

func (*API) FindTransactions

func (api *API) FindTransactions(ft *FindTransactionsRequest) (*FindTransactionsResponse, error)

FindTransactions calls FindTransactions API.

func (*API) GetBalances

func (api *API) GetBalances(adr []Address, threshold int64) (*GetBalancesResponse, error)

GetBalances calls GetBalances API.

func (*API) GetInclusionStates

func (api *API) GetInclusionStates(tx []Trytes, tips []Trytes) (*GetInclusionStatesResponse, error)

GetInclusionStates calls GetInclusionStates API.

func (*API) GetLatestInclusion

func (api *API) GetLatestInclusion(hash []Trytes) ([]bool, error)

GetLatestInclusion takes the most recent solid milestone as returned by getNodeInfo and uses it to get the inclusion states of a list of transaction hashes

func (*API) GetNeighbors

func (api *API) GetNeighbors() (*GetNeighborsResponse, error)

GetNeighbors calls GetNeighbors API.

func (*API) GetNodeInfo

func (api *API) GetNodeInfo() (*GetNodeInfoResponse, error)

GetNodeInfo calls GetNodeInfo API.

func (*API) GetPeerAddresses

func (api *API) GetPeerAddresses() (*GetPeerAddressesResponse, error)

GetPeerAddresses calls GetPeerAddresses API.

func (*API) GetTips

func (api *API) GetTips() (*GetTipsResponse, error)

GetTips calls GetTips API.

func (*API) GetTransactionsToApprove

func (api *API) GetTransactionsToApprove(depth int64) (*GetTransactionsToApproveResponse, error)

GetTransactionsToApprove calls GetTransactionsToApprove API.

func (*API) GetTrytes

func (api *API) GetTrytes(hashes []Trytes) (*GetTrytesResponse, error)

GetTrytes calls GetTrytes API.

func (*API) InterruptAttachingToMesh

func (api *API) InterruptAttachingToMesh() error

InterruptAttachingToMesh calls InterruptAttachingToMesh API.

func (*API) RemoveNeighbors

func (api *API) RemoveNeighbors(uris []string) (*RemoveNeighborsResponse, error)

RemoveNeighbors calls RemoveNeighbors API.

func (*API) StoreTransactions

func (api *API) StoreTransactions(trytes []Transaction) error

StoreTransactions calls StoreTransactions API.

type AddNeighborsRequest

type AddNeighborsRequest struct {
	Command string `json:"command"`

	// URIS is an array of strings in the form of "udp://identifier:port"
	// where identifier can be either an IP address or a domain name.
	URIS []string `json:"uris"`
}

AddNeighborsRequest is for AddNeighbors API request.

type AddNeighborsResponse

type AddNeighborsResponse struct {
	Duration       int64 `json:"duration"`
	AddedNeighbors int64 `json:"addedNeighbors"`
}

AddNeighborsResponse is for AddNeighbors API response.

type Address

type Address Trytes

Address represents address without checksum for adk. Don't use type cast, use ToAddress instead to check the validity.

func NewAddress

func NewAddress(seed Trytes, index, security int) (Address, error)

NewAddress generates a new address from seed without checksum.

func NewAddresses

func NewAddresses(seed Trytes, start, count, security int) ([]Address, error)

NewAddresses generates new count addresses from seed without checksum.

func ToAddress

func ToAddress(t string) (Address, error)

ToAddress convert string to address, and checks the validity.

func (Address) Checksum

func (a Address) Checksum() Trytes

Checksum returns checksum trytes. This panics if len(address)<81

func (Address) IsValid

func (a Address) IsValid() error

IsValid return nil if address is valid.

func (Address) WithChecksum

func (a Address) WithChecksum() Trytes

WithChecksum returns Address+checksum. This panics if len(address)<81

type AddressInfo

type AddressInfo struct {
	Seed     Trytes
	Index    int
	Security int
}

AddressInfo includes address and its infomation. for using signing.

func (*AddressInfo) Address

func (a *AddressInfo) Address() (Address, error)

Address makes Address from address infos.

func (*AddressInfo) Key

func (a *AddressInfo) Key() Trytes

Key makes Key from address infos.

type AttachToMeshRequest

type AttachToMeshRequest struct {
	Command            string        `json:"command"`
	TrunkTransaction   Trytes        `json:"trunkTransaction"`
	BranchTransaction  Trytes        `json:"branchTransaction"`
	MinWeightMagnitude int64         `json:"minWeightMagnitude"`
	Trytes             []Transaction `json:"trytes"`
}

AttachToMeshRequest is for AttachToMesh API request.

type AttachToMeshResponse

type AttachToMeshResponse struct {
	Duration int64         `json:"duration"`
	Trytes   []Transaction `json:"trytes"`
}

AttachToMeshResponse is for AttachToMesh API response.

type Balance

type Balance struct {
	Address Address
	Value   int64
}

Balance is total balance of an Address.

type Balances

type Balances []Balance

Balances is slice of Balance.

func (Balances) Total

func (bs Balances) Total() int64

Total returns the total balance.

type BroadcastTransactionsRequest

type BroadcastTransactionsRequest struct {
	Command string        `json:"command"`
	Trytes  []Transaction `json:"trytes"`
}

BroadcastTransactionsRequest is for BroadcastTransactions API request.

type Bundle

type Bundle []Transaction

Bundle is transactions are bundled (or grouped) together during the creation of a transfer.

func PrepareTransfers

func PrepareTransfers(api *API, seed Trytes, trs []Transfer, inputs []AddressInfo, remainder Address, security int) (Bundle, error)

PrepareTransfers gets an array of transfer objects as input, and then prepare the transfer by generating the correct bundle, as well as choosing and signing the inputs if necessary (if it's a value transfer).

func Send

func Send(api *API, seed Trytes, security int, trs []Transfer, pow PowFunc) (Bundle, error)

Send sends token. if you need to pow locally, you must specifiy pow func. otherwirse this calls AttachToMesh API.

func (*Bundle) Add

func (bs *Bundle) Add(num int, address Address, value int64, timestamp time.Time, tag Trytes)

Add adds one bundle to bundle slice tempolary. For now elements which are not specified are filled with trits 0.

func (Bundle) Categorize

func (bs Bundle) Categorize(adr Address) (send Bundle, received Bundle)

Categorize Categorizes a list of transfers into sent and received. It is important to note that zero value transfers (which for example, is being used for storing addresses in the Mesh), are seen as received in this function.

func (Bundle) Finalize

func (bs Bundle) Finalize(sig []Trytes)

Finalize filled sigs,bundlehash and indices elements in bundle.

func (Bundle) Hash

func (bs Bundle) Hash() Trytes

Hash calculates hash of Bundle.

func (Bundle) IsValid

func (bs Bundle) IsValid() error

IsValid checks the validity of Bundle. It checks total balance==0 and its signature. You must call Finalize() beforehand.

type Curl

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

Curl is a sponge function with an internal state of size StateSize. b = r + c, b = StateSize, r = HashSize, c = StateSize - HashSize

func NewCurl

func NewCurl() *Curl

NewCurl initializes a new instance with an empty state.

func (*Curl) Absorb

func (c *Curl) Absorb(inn Trytes)

Absorb fills the internal state of the sponge with the given trits.

func (*Curl) Reset

func (c *Curl) Reset()

Reset the internal state of the Curl sponge by filling it with all 0's.

func (*Curl) Squeeze

func (c *Curl) Squeeze() Trytes

Squeeze do Squeeze in sponge func.

func (*Curl) Transform

func (c *Curl) Transform()

Transform does Transform in sponge func.

type ErrorResponse

type ErrorResponse struct {
	Error     string `json:"error"`
	Exception string `json:"exception"`
}

ErrorResponse is for occuring exception while calling API.

type FindTransactionsRequest

type FindTransactionsRequest struct {
	Command   string    `json:"command"`
	Bundles   []Trytes  `json:"bundles,omitempty"`
	Addresses []Address `json:"addresses,omitempty"`
	Tags      []Trytes  `json:"tags,omitempty"`
	Approvees []Trytes  `json:"approvees,omitempty"`
}

FindTransactionsRequest is for FindTransactions API request.

type FindTransactionsResponse

type FindTransactionsResponse struct {
	Duration int64    `json:"duration"`
	Hashes   []Trytes `json:"hashes"`
}

FindTransactionsResponse is for FindTransaction API response.

type GetBalancesRequest

type GetBalancesRequest struct {
	Command   string    `json:"command"`
	Addresses []Address `json:"addresses"`
	Threshold int64     `json:"threshold"`
}

GetBalancesRequest is for GetBalances API request.

type GetBalancesResponse

type GetBalancesResponse struct {
	Duration       int64
	Balances       []int64
	Milestone      Trytes
	MilestoneIndex int64
}

GetBalancesResponse is for GetBalances API response.

type GetInclusionStatesRequest

type GetInclusionStatesRequest struct {
	Command      string   `json:"command"`
	Transactions []Trytes `json:"transactions"`
	Tips         []Trytes `json:"tips"`
}

GetInclusionStatesRequest is for GetInclusionStates API request.

type GetInclusionStatesResponse

type GetInclusionStatesResponse struct {
	Duration int64  `json:"duration"`
	States   []bool `json:"states"`
}

GetInclusionStatesResponse is for GetInclusionStates API response.

type GetNeighborsRequest

type GetNeighborsRequest struct {
	Command string `json:"command"`
}

GetNeighborsRequest is for GetNeighbors API request.

type GetNeighborsResponse

type GetNeighborsResponse struct {
	Duration  int64
	Neighbors []Neighbor
}

GetNeighborsResponse is for GetNeighbors API response.

type GetNodeInfoRequest

type GetNodeInfoRequest struct {
	Command string `json:"command"`
}

GetNodeInfoRequest is for GetNodeInfo API request.

type GetNodeInfoResponse

type GetNodeInfoResponse struct {
	AppName                          string `json:"appName"`
	AppVersion                       string `json:"appVersion"`
	Duration                         int64  `json:"duration"`
	JREAvailableProcessors           int64  `json:"jreAvailableProcessors"`
	JREFreeMemory                    int64  `json:"jreFreeMemory"`
	JREMaxMemory                     int64  `json:"jreMaxMemory"`
	JRETotalMemory                   int64  `json:"jreTotalMemory"`
	LatestMilestone                  Trytes `json:"latestMilestone"`
	LatestMilestoneIndex             int64  `json:"latestMilestoneIndex"`
	LatestSolidSubmeshMilestone      Trytes `json:"latestSolidSubmeshMilestone"`
	LatestSolidSubmeshMilestoneIndex int64  `json:"latestSolidSubmeshMilestoneIndex"`
	Neighbors                        int64  `json:"neighbors"`
	PacketQueueSize                  int64  `json:"packetQueueSize"`
	Time                             int64  `json:"time"`
	Tips                             int64  `json:"tips"`
	TransactionsToRequest            int64  `json:"transactionsToRequest"`
}

GetNodeInfoResponse is for GetNode APi response.

type GetPeerAddressesRawResponse

type GetPeerAddressesRawResponse struct {
	Duration int64    `json:"duration"`
	Peers    []string `json:"peerlist"`
}

GetPeerAddressesRawResponse is for raw GetPeerAddresses API response.

type GetPeerAddressesRequest

type GetPeerAddressesRequest struct {
	Command string `json:"command"`
}

GetPeerAddressesRequest is for GetPeerAddresses API request.

type GetPeerAddressesResponse

type GetPeerAddressesResponse struct {
	Duration int64         `json:"duration"`
	Peers    []PeerAddress `json:"peerlist"`
}

GetPeerAddressesResponse is for GetPeerAddresses API response.

type GetTipsRequest

type GetTipsRequest struct {
	Command string `json:"command"`
}

GetTipsRequest is for GetTipsRequest API request.

type GetTipsResponse

type GetTipsResponse struct {
	Duration int64    `json:"duration"`
	Hashes   []Trytes `json:"hashes"`
}

GetTipsResponse is for GetTips API response.

type GetTransactionsToApproveRequest

type GetTransactionsToApproveRequest struct {
	Command string `json:"command"`
	Depth   int64  `json:"depth"`
}

GetTransactionsToApproveRequest is for GetTransactionsToApprove API request.

type GetTransactionsToApproveResponse

type GetTransactionsToApproveResponse struct {
	Duration          int64  `json:"duration"`
	TrunkTransaction  Trytes `json:"trunkTransaction"`
	BranchTransaction Trytes `json:"branchTransaction"`
}

GetTransactionsToApproveResponse is for GetTransactionsToApprove API response.

type GetTrytesRequest

type GetTrytesRequest struct {
	Command string   `json:"command"`
	Hashes  []Trytes `json:"hashes"`
}

GetTrytesRequest is for GetTrytes API request.

type GetTrytesResponse

type GetTrytesResponse struct {
	Duration int64         `json:"duration"`
	Trytes   []Transaction `json:"trytes"`
}

GetTrytesResponse is for GetTrytes API response.

type InterruptAttachingToMeshRequest

type InterruptAttachingToMeshRequest struct {
	Command string `json:"command"`
}

InterruptAttachingToMeshRequest is for InterruptAttachingToMesh API request.

type Neighbor

type Neighbor struct {
	Address                     Address `json:"address"`
	NumberOfAllTransactions     int64   `json:"numberOfAllTransactions"`
	NumberOfInvalidTransactions int64   `json:"numberOfInvalidTransactions"`
	NumberOfNewTransactions     int64   `json:"numberOfNewTransactions"`
}

Neighbor is a part of response of GetNeighbors API.

type PeerAddress

type PeerAddress struct {
	Address string
	Port    string
}

type PowFunc

type PowFunc func(Trytes, int) (Trytes, error)

PowFunc is the tyoe of func for PoW

func GetBestPoW

func GetBestPoW() (string, PowFunc)

GetBestPoW returns most preferable PoW func.

type RemoveNeighborsRequest

type RemoveNeighborsRequest struct {
	Command string `json:"command"`

	// URIS is an array of strings in the form of "udp://identifier:port"
	// where identifier can be either an IP address or a domain name.
	URIS []string `json:"uris"`
}

RemoveNeighborsRequest is for RemoveNeighbors API request.

type RemoveNeighborsResponse

type RemoveNeighborsResponse struct {
	Duration         int64 `json:"duration"`
	RemovedNeighbors int64 `json:"removedNeighbors"`
}

RemoveNeighborsResponse is for RemoveNeighbors API response.

type StoreTransactionsRequest

type StoreTransactionsRequest struct {
	Command string        `json:"command"`
	Trytes  []Transaction `json:"trytes"`
}

StoreTransactionsRequest is for StoreTransactions API request.

type Transaction

type Transaction struct {
	SignatureMessageFragment Trytes
	Address                  Address
	Value                    int64 `json:",string"`
	Tag                      Trytes
	Timestamp                time.Time
	CurrentIndex             int64 `json:",string"`
	LastIndex                int64 `json:",string"`
	Bundle                   Trytes
	TrunkTransaction         Trytes
	BranchTransaction        Trytes
	Nonce                    Trytes
}

Transaction is transaction structure for adk.

func NewTransaction

func NewTransaction(trytes Trytes) (*Transaction, error)

NewTransaction makes tx from trits.

func (*Transaction) HasValidNonce

func (t *Transaction) HasValidNonce() bool

HasValidNonce checks t's hash has valid MinWeightMagnitude.

func (*Transaction) HasValidNonceMWM

func (t *Transaction) HasValidNonceMWM(mwm int) bool

HasValidNonceMWM checks t's hash has valid MinWeightMagnitude.

func (*Transaction) Hash

func (t *Transaction) Hash() Trytes

Hash returns the hash of the transaction.

func (*Transaction) MarshalJSON

func (t *Transaction) MarshalJSON() ([]byte, error)

MarshalJSON makes trytes ([]byte) from a transaction.

func (*Transaction) Trytes

func (t *Transaction) Trytes() Trytes

Trytes converts the transaction to Trytes.

func (*Transaction) UnmarshalJSON

func (t *Transaction) UnmarshalJSON(b []byte) error

UnmarshalJSON makes transaction struct from json.

type Transfer

type Transfer struct {
	Address Address
	Value   int64
	Message Trytes
	Tag     Trytes
}

Transfer represents data to be transfered by bundles.

type Trits

type Trits []int8

Trits is a slice of int8. You should not use cast, use ToTrits instead to ensure the validity.

func Int2Trits

func Int2Trits(v int64, size int) Trits

Int2Trits converts int64 to trits.

func ToTrits

func ToTrits(t []int8) (Trits, error)

ToTrits cast Trits and checks its validity.

func (Trits) CanTrytes

func (t Trits) CanTrytes() bool

CanTrytes returns true if t can be converted to trytes.

func (Trits) Equal

func (t Trits) Equal(b Trits) bool

Equal returns true if a and b are equal.

func (Trits) Int

func (t Trits) Int() int64

Int converts a slice of trits into an integer, Assumes little-endian notation.

func (Trits) IsValid

func (t Trits) IsValid() error

IsValid returns true if ts is valid trits.

func (Trits) Trytes

func (t Trits) Trytes() Trytes

Trytes converts a slice of trits into trytes, This panics if len(t)%3!=0

type Trytes

type Trytes string

Trytes is a string of trytes. You should not use cast, use ToTrytes instead to ensure the validity.

func Digests

func Digests(key Trytes) (Trytes, error)

Digests calculates hash x 26 for each segments in keyTrits.

func NewKey

func NewKey(seed Trytes, index, securityLevel int) Trytes

NewKey takes a seed encoded as Trits, an index and a security level to derive a private key.

func NewSeed

func NewSeed() Trytes

NewSeed generate a random Trytes.

func PowC

func PowC(trytes Trytes, mwm int) (Trytes, error)

PowC is proof of work of adk using pure C.

func PowGo

func PowGo(trytes Trytes, mwm int) (Trytes, error)

PowGo is proof of work of adk in pure.

func PowSSE

func PowSSE(trytes Trytes, mwm int) (Trytes, error)

PowSSE is proof of work of adk for amd64 using SSE2(or AMD64).

func Sign

func Sign(normalizedBundleFragment []int8, keyFragment Trytes) Trytes

Sign calculates signature from bundle hash and key by hashing x 13-normalizedBundleFragment[i] for each segments in keyTrits.

func ToTrytes

func ToTrytes(t string) (Trytes, error)

ToTrytes cast to Trytes and checks its validity.

func (Trytes) Hash

func (t Trytes) Hash() Trytes

Hash returns hash of t.

func (Trytes) IsValid

func (t Trytes) IsValid() error

IsValid returns true if st is valid trytes.

func (Trytes) Normalize

func (t Trytes) Normalize() []int8

Normalize changes bits in trits so that sum of trits bits is zero.

func (Trytes) ToAddress

func (t Trytes) ToAddress() (Address, error)

ToAddress convert trytes(with and without checksum) to address, and checks the validity.

func (Trytes) Trits

func (t Trytes) Trits() Trits

Trits converts a slice of trytes into tryits,

Jump to

Keyboard shortcuts

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