Documentation
¶
Index ¶
- Constants
- func BuildBase64Message(msg string) string
- func BytesToInt64(buf []byte) int64
- func BytesToString(buf []byte) string
- func BytesToUint64(b []byte) uint64
- func Deallocate(pointer unsafe.Pointer)
- func DisplayMessage(msg []byte) int
- func Package_message(msg []byte) unsafe.Pointer
- func TranslateToRegion(b []byte, ptr uintptr) uintptr
- func TranslateToSlice(ptr uintptr) []byte
- func Translate_range_custom(ptr uintptr) []byte
- func Uint64toBytes(v uint64) []byte
- type AllBalancesQuery
- type AllBalancesResponse
- type AllDelegationsQuery
- type AllDelegationsResponse
- type Api
- type Attribute
- type BalanceQuery
- type BalanceResponse
- type BankMsg
- type BankQuery
- type BlockInfo
- type BondedDenomResponse
- type CanonicalAddr
- type Coin
- type Coins
- type ContractInfo
- type CosmosMsg
- type CosmosResponseError
- type DelegateMsg
- type Delegation
- type DelegationQuery
- type DelegationResponse
- type Delegations
- type Deps
- type Env
- type ErrorType
- type ExecuteMsg
- type FullDelegation
- type GenericErr
- type HandleResponse
- type HandleResultOk
- type InitResponse
- type InitResultOk
- type InstantiateMsg
- type InvalidBase64
- type InvalidRequest
- type InvalidResponse
- type InvalidUtf8
- type Iterator
- type MemRegion
- type MessageInfo
- type MigrateResponse
- type MigrateResultOk
- type MockApi
- type MockIterator
- type MockQuerier
- func (q *MockQuerier) GetBalance(addr string) []Coin
- func (q *MockQuerier) HandleBank(request BankQuery) (interface{}, error)
- func (q *MockQuerier) HandleQuery(request QueryRequest) (interface{}, error)
- func (q *MockQuerier) RawQuery(raw []byte) ([]byte, error)
- func (q *MockQuerier) SetBalance(addr string, balance []Coin)
- type MockStorage
- type NoSuchContract
- type NotFound
- type NullPointer
- type OptionBinary
- type Order
- type ParseErr
- type Querier
- type QuerierResult
- type QuerierWrapper
- type QueryRequest
- type QueryResponse
- type RawMessage
- type RawQuery
- type ReadonlyStorage
- type RedelegateMsg
- type SendMsg
- type SerializeErr
- type SliceHeader_Go
- type SliceHeader_tinyGo
- type SmartQuery
- type StakingMsg
- type StakingQuery
- type StdError
- type Storage
- type SystemError
- type Unauthorized
- type UndelegateMsg
- type Underflow
- type Unknown
- type UnsupportedRequest
- type Validator
- type Validators
- type ValidatorsResponse
- type WasmMsg
- type WasmQuery
- type WithdrawMsg
Constants ¶
const MAX_ARRAY_SIZE = 8
random constant for the size to preallocate arrays before parsing
const MOCK_CONTRACT_ADDR = "test-contract"
const REGION_HEAD_SIZE uint32 = 12
Variables ¶
This section is empty.
Functions ¶
func BuildBase64Message ¶
func BytesToInt64 ¶
func BytesToString ¶
func BytesToUint64 ¶
func Deallocate ¶
func DisplayMessage ¶
func Package_message ¶
func TranslateToRegion ¶
func TranslateToSlice ¶
func Translate_range_custom ¶
func Uint64toBytes ¶
Types ¶
type AllBalancesQuery ¶
type AllBalancesQuery struct {
Address string `json:"address"`
}
type AllBalancesResponse ¶
type AllBalancesResponse struct {
Amount Coins `json:"amount"`
}
AllBalancesResponse is the expected response to AllBalancesQuery
type AllDelegationsQuery ¶
type AllDelegationsQuery struct {
Delegator string `json:"delegator"`
}
type AllDelegationsResponse ¶
type AllDelegationsResponse struct {
Delegations Delegations `json:"delegations"`
}
AllDelegationsResponse is the expected response to AllDelegationsQuery
type Api ¶
type Api interface { CanonicalAddress(human string) (CanonicalAddr, error) HumanAddress(canonical CanonicalAddr) (string, error) Debug(msg string) }
type BalanceQuery ¶
type BalanceResponse ¶
type BalanceResponse struct {
Amount Coin `json:"amount"`
}
BalanceResponse is the expected response to BalanceQuery
type BankQuery ¶
type BankQuery struct { Balance BalanceQuery `json:"balance,omitempty"` AllBalances AllBalancesQuery `json:"all_balances,omitempty"` }
type BondedDenomResponse ¶
type BondedDenomResponse struct {
Denom string `json:"denom"`
}
type CanonicalAddr ¶
type CanonicalAddr []byte
type Coin ¶
type Coin struct { Denom string `json:"denom"` // type, eg. "ATOM" Amount string `json:"amount"` // string encoing of decimal value, eg. "12.3456" }
Coin is a string representation of the sdk.Coin type (more portable than sdk.Int)
type Coins ¶
type Coins []Coin
Coins handles properly serializing empty amounts
func (Coins) MarshalJSON ¶
MarshalJSON ensures that we get [] for empty arrays
type ContractInfo ¶
type ContractInfo struct { // bech32 encoding of sdk.AccAddress of the contract, to be used when sending messages Address string `json:"address"` }
type CosmosMsg ¶
type CosmosMsg struct { Bank BankMsg `json:"bank,omitempty"` Custom RawMessage `json:"custom,omitempty"` Staking StakingMsg `json:"staking,omitempty"` Wasm WasmMsg `json:"wasm,omitempty"` }
CosmosMsg is an rust enum and only (exactly) one of the fields should be set Should we do a cleaner approach in Go? (type/data?)
type CosmosResponseError ¶
type CosmosResponseError struct {
Err StdError
}
func GenerateError ¶
func GenerateError(errType ErrorType, msg string, msg_plus string) *CosmosResponseError
type DelegateMsg ¶
type Delegation ¶
type DelegationQuery ¶
type DelegationResponse ¶
type DelegationResponse struct {
Delegation *FullDelegation `json:"delegation,omitempty"`
}
DelegationResponse is the expected response to DelegationsQuery
type Delegations ¶
type Delegations []Delegation
func (Delegations) MarshalJSON ¶
func (d Delegations) MarshalJSON() ([]byte, error)
MarshalJSON ensures that we get [] for empty arrays
func (*Delegations) UnmarshalJSON ¶
func (d *Delegations) UnmarshalJSON(data []byte) error
UnmarshalJSON ensures that we get [] for empty arrays
type Env ¶
type Env struct { Block BlockInfo `json:"block"` Contract ContractInfo `json:"contract"` }
Env defines the state of the blockchain environment this contract is running in. This must contain only trusted data - nothing from the Tx itself that has not been verfied (like Signer).
Env are json encoded to a byte slice before passing to the wasm contract.
type ExecuteMsg ¶
type ExecuteMsg struct { // ContractAddr is the sdk.AccAddress of the contract, which uniquely defines // the contract ID and instance ID. The sdk module should maintain a reverse lookup table. ContractAddr string `json:"contract_addr"` // Msg is assumed to be a json-encoded message, which will be passed directly // as `userMsg` when calling `Handle` on the above-defined contract Msg []byte `json:"msg"` // Send is an optional amount of coins this contract sends to the called contract Send Coins `json:"send"` }
ExecuteMsg is used to call another defined contract on this chain. The calling contract requires the callee to be defined beforehand, and the address should have been defined in initialization. And we assume the developer tested the ABIs and coded them together.
Since a contract is immutable once it is deployed, we don't need to transform this. If it was properly coded and worked once, it will continue to work throughout upgrades.
type FullDelegation ¶
type GenericErr ¶
type GenericErr struct {
Msg string `json:"msg,omitempty"`
}
func (GenericErr) Error ¶
func (e GenericErr) Error() string
type HandleResponse ¶
type HandleResponse struct { // Messages comes directly from the contract and is it's request for action Messages []CosmosMsg `json:"messages"` // base64-encoded bytes to return as ABCI.Data field Data string `json:"data,rust_option"` // log message to return over abci interface Attributes []Attribute `json:"attributes"` }
HandleResponse defines the return value on a successful handle
type HandleResultOk ¶
type HandleResultOk struct {
Ok HandleResponse `json:"ok"`
}
func HandleResultOkDefault ¶
func HandleResultOkDefault() *HandleResultOk
type InitResponse ¶
type InitResponse struct { // Messages comes directly from the contract and is it's request for action Messages []CosmosMsg `json:"messages"` // log message to return over abci interface Attributes []Attribute `json:"attributes"` }
InitResponse defines the return value on a successful handle
type InitResultOk ¶
type InitResultOk struct {
Ok InitResponse `json:"ok"`
}
func InitResultOkOkDefault ¶
func InitResultOkOkDefault() *InitResultOk
type InstantiateMsg ¶
type InstantiateMsg struct { // CodeID is the reference to the wasm byte code as used by the Cosmos-SDK CodeID uint64 `json:"code_id"` // Msg is assumed to be a json-encoded message, which will be passed directly // as `userMsg` when calling `Handle` on the above-defined contract Msg []byte `json:"msg"` // Send is an optional amount of coins this contract sends to the called contract Send Coins `json:"send"` }
type InvalidBase64 ¶
type InvalidBase64 struct {
Msg string `json:"msg,omitempty"`
}
func (InvalidBase64) Error ¶
func (e InvalidBase64) Error() string
type InvalidRequest ¶
func (InvalidRequest) Error ¶
func (e InvalidRequest) Error() string
type InvalidResponse ¶
func (InvalidResponse) Error ¶
func (e InvalidResponse) Error() string
type InvalidUtf8 ¶
type InvalidUtf8 struct {
Msg string `json:"msg,omitempty"`
}
func (InvalidUtf8) Error ¶
func (e InvalidUtf8) Error() string
type MessageInfo ¶
type MessageInfo struct { // bech32 encoding of sdk.AccAddress executing the contract Sender string `json:"sender"` // amount of funds send to the contract along with this message SentFunds []Coin `json:"sent_funds"` }
func MockInfo ¶
func MockInfo(sender string, funds []Coin) MessageInfo
type MigrateResponse ¶
type MigrateResponse struct { // Messages comes directly from the contract and is it's request for action Messages []CosmosMsg `json:"messages"` // base64-encoded bytes to return as ABCI.Data field Data string `json:"data,rust_option"` // log message to return over abci interface Attributes []Attribute `json:"attributes"` }
MigrateResponse defines the return value on a successful handle
type MigrateResultOk ¶
type MigrateResultOk struct {
Ok MigrateResponse `json:"ok"`
}
func MigrateResultOkDefault ¶
func MigrateResultOkDefault() *MigrateResultOk
type MockApi ¶
type MockApi struct{}
func (MockApi) CanonicalAddress ¶
func (api MockApi) CanonicalAddress(human string) (CanonicalAddr, error)
func (MockApi) HumanAddress ¶
func (api MockApi) HumanAddress(canonical CanonicalAddr) (string, error)
type MockIterator ¶
func (MockIterator) Next ¶
func (iter MockIterator) Next() (key, value []byte, err error)
type MockQuerier ¶
func NewMockQuerier ¶
func NewMockQuerier(funds []Coin) *MockQuerier
func (*MockQuerier) GetBalance ¶
func (q *MockQuerier) GetBalance(addr string) []Coin
func (*MockQuerier) HandleBank ¶
func (q *MockQuerier) HandleBank(request BankQuery) (interface{}, error)
func (*MockQuerier) HandleQuery ¶
func (q *MockQuerier) HandleQuery(request QueryRequest) (interface{}, error)
func (*MockQuerier) SetBalance ¶
func (q *MockQuerier) SetBalance(addr string, balance []Coin)
type MockStorage ¶
type MockStorage struct {
// contains filtered or unexported fields
}
func NewMockStorage ¶
func NewMockStorage() *MockStorage
func (*MockStorage) Range ¶
func (s *MockStorage) Range(start, end []byte, order Order) (iter Iterator, err error)
func (*MockStorage) Remove ¶
func (s *MockStorage) Remove(key []byte) error
func (*MockStorage) Set ¶
func (s *MockStorage) Set(key, value []byte) error
type NoSuchContract ¶
type NoSuchContract struct {
Addr string `json:"addr,omitempty"`
}
func (NoSuchContract) Error ¶
func (e NoSuchContract) Error() string
type NullPointer ¶
type NullPointer struct {
Msg string `json:"msg"`
}
func (NullPointer) Error ¶
func (e NullPointer) Error() string
type OptionBinary ¶
type QuerierResult ¶
type QuerierResult struct { Ok QueryResponse `json:"ok,omitempty"` // TODO: what is this format actually? Error string `json:"error,omitempty"` }
This is a 2-level result
type QuerierWrapper ¶
type QuerierWrapper struct {
Querier
}
func (QuerierWrapper) QueryAllBalances ¶
func (q QuerierWrapper) QueryAllBalances(addr string) ([]Coin, error)
func (QuerierWrapper) QueryBalance ¶
func (q QuerierWrapper) QueryBalance(addr string, denom string) (Coin, error)
type QueryRequest ¶
type QueryRequest struct { Bank BankQuery `json:"bank,omitempty"` Custom RawMessage `json:"custom,omitempty"` Staking StakingQuery `json:"staking,omitempty"` Wasm WasmQuery `json:"wasm,omitempty"` }
QueryRequest is an rust enum and only (exactly) one of the fields should be set Should we do a cleaner approach in Go? (type/data?)
type QueryResponse ¶
type QueryResponse struct { // this must be base64 encoded Ok string `json:"ok,omitempty,rust_option"` // TODO: what is this format actually? Error string `json:"error,omitempty"` }
------- query detail types ---------
func BuildQueryResponse ¶
func BuildQueryResponse(msg string) *QueryResponse
func BuildQueryResponseBinary ¶
func BuildQueryResponseBinary(msg []byte) *QueryResponse
func (QueryResponse) Data ¶
func (q QueryResponse) Data() ([]byte, error)
type RawMessage ¶
type RawMessage []byte
RawMessage is a raw encoded JSON value. It implements Marshaler and Unmarshaler and can be used to delay JSON decoding or precompute a JSON encoding.
func (RawMessage) MarshalJSON ¶
func (m RawMessage) MarshalJSON() ([]byte, error)
MarshalJSON returns m as the JSON encoding of m.
func (*RawMessage) UnmarshalJSON ¶
func (m *RawMessage) UnmarshalJSON(data []byte) error
UnmarshalJSON sets *m to a copy of data.
type ReadonlyStorage ¶
type RedelegateMsg ¶
type SendMsg ¶
type SendMsg struct { FromAddress string `json:"from_address"` ToAddress string `json:"to_address"` Amount Coins `json:"amount"` }
SendMsg contains instructions for a Cosmos-SDK/SendMsg It has a fixed interface here and should be converted into the proper SDK format before dispatching
type SerializeErr ¶
type SerializeErr struct { Source string `json:"source,omitempty"` Msg string `json:"msg,omitempty"` }
func (SerializeErr) Error ¶
func (e SerializeErr) Error() string
type SliceHeader_Go ¶
type SliceHeader_tinyGo ¶
type SmartQuery ¶
SmartQuery respone is raw bytes ([]byte)
type StakingMsg ¶
type StakingMsg struct { Delegate DelegateMsg `json:"delegate,omitempty"` Undelegate UndelegateMsg `json:"undelegate,omitempty"` Redelegate RedelegateMsg `json:"redelegate,omitempty"` Withdraw WithdrawMsg `json:"withdraw,omitempty"` }
type StakingQuery ¶
type StakingQuery struct { Validators ezjson.EmptyStruct `json:"validators,omitempty,opt_seen"` AllDelegations AllDelegationsQuery `json:"all_delegations,omitempty"` Delegation DelegationQuery `json:"delegation,omitempty"` BondedDenom ezjson.EmptyStruct `json:"bonded_denom,omitempty,opt_seen"` }
func (StakingQuery) IsEmpty ¶
func (s StakingQuery) IsEmpty() bool
type StdError ¶
type StdError struct { GenericErr GenericErr `json:"generic_err,omitempty"` InvalidBase64 InvalidBase64 `json:"invalid_base64,omitempty"` InvalidUtf8 InvalidUtf8 `json:"invalid_utf8,omitempty"` NotFound NotFound `json:"not_found,omitempty"` NullPointer NullPointer `json:"null_pointer,omitempty"` ParseErr ParseErr `json:"parse_err,omitempty"` SerializeErr SerializeErr `json:"serialize_err,omitempty"` Underflow Underflow `json:"underflow,omitempty"` }
StdError captures all errors returned from the Rust code as StdError. Exactly one of the fields should be set.
type Storage ¶
type Storage interface { ReadonlyStorage Set(key, value []byte) error Remove(key []byte) error }
type SystemError ¶
type SystemError struct { InvalidRequest InvalidRequest `json:"invalid_request,omitempty"` InvalidResponse InvalidResponse `json:"invalid_response,omitempty"` NoSuchContract NoSuchContract `json:"no_such_contract,omitempty"` Unknown Unknown `json:"unknown,omitempty"` UnsupportedRequest UnsupportedRequest `json:"unsupported_request,omitempty"` }
SystemError captures all errors returned from the Rust code as SystemError. Exactly one of the fields should be set.
func ToSystemError ¶
func ToSystemError(err error) SystemError
ToSystemError will try to convert the given error to an SystemError. This is important to returning any Go error back to Rust.
If it is already StdError, return self. If it is an error, which could be a sub-field of StdError, embed it. If it is anything else, **return nil**
This may return nil on an unknown error, whereas ToStdError will always create a valid error type.
type Unauthorized ¶
type Unauthorized struct {
}func (Unauthorized) Error ¶
func (e Unauthorized) Error() string
type UndelegateMsg ¶
type Underflow ¶
type UnsupportedRequest ¶
type UnsupportedRequest struct {
Kind string `json:"kind,omitempty"`
}
func (UnsupportedRequest) Error ¶
func (e UnsupportedRequest) Error() string
type Validators ¶
type Validators []Validator
TODO: Validators must JSON encode empty array as []
func (Validators) MarshalJSON ¶
func (v Validators) MarshalJSON() ([]byte, error)
MarshalJSON ensures that we get [] for empty arrays
func (*Validators) UnmarshalJSON ¶
func (v *Validators) UnmarshalJSON(data []byte) error
UnmarshalJSON ensures that we get [] for empty arrays
type ValidatorsResponse ¶
type ValidatorsResponse struct {
Validators Validators `json:"validators"`
}
ValidatorsResponse is the expected response to ValidatorsQuery
type WasmMsg ¶
type WasmMsg struct { Execute ExecuteMsg `json:"execute,omitempty"` Instantiate InstantiateMsg `json:"instantiate,omitempty"` }
type WasmQuery ¶
type WasmQuery struct { Smart SmartQuery `json:"smart,omitempty"` Raw RawQuery `json:"raw,omitempty"` }