mirror of
https://github.com/planetmint/planetmint-go.git
synced 2025-06-21 21:46:38 +00:00

* [lib] Add fee denominator parameter * [lib] Add client context parameter e.g. the test cases create their own client context. * [lib] Reset client context's output Otherwise if the client context does not change, output gets appended and gets un-parsable. * [test] Set missing validator client context values Necessary for sending transactions. * [test] Configure RPC library * [test] Fix `TestReissuance()` // Closes #195 * Partially revert "[lib] Provide default encoding config (#209)" This reverts commit 8a8a3aaaf2648f87c4052575bc1a60b23056463b. Fix README example. Signed-off-by: Julian Strobl <jmastr@mailbox.org>
118 lines
3.3 KiB
Markdown
118 lines
3.3 KiB
Markdown
# Library for RPC requests to Planetmint
|
|
|
|
## How to use it
|
|
|
|
In the example below we use the account `addr0` for which we have the private key in our keyring.
|
|
We configure the address prefix andd change the default RPC endpoint to a remote one.
|
|
The only keyring backend currently supported is the test backend under `keyring-test`.
|
|
After that we construct three messages to send `10plmnt` each to three addresses `addr1`, `addr2` and `addr3`.
|
|
We then build and sign the transaction and eventually send this transaction via RPC.
|
|
For debugging purposes we print the transaction that we send as JSON.
|
|
|
|
```
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
|
|
"github.com/planetmint/planetmint-go/app"
|
|
"github.com/planetmint/planetmint-go/lib"
|
|
)
|
|
|
|
func main() {
|
|
encodingConfig := app.MakeEncodingConfig()
|
|
|
|
libConfig := lib.GetConfig()
|
|
libConfig.SetEncodingConfig(encodingConfig)
|
|
libConfig.SetRPCEndpoint("https://testnet-rpc.rddl.io:443")
|
|
|
|
addr0 := sdk.MustAccAddressFromBech32("plmnt168z8fyyzap0nw75d4atv9ucr2ye60d57dzlzaf")
|
|
addr1 := sdk.MustAccAddressFromBech32("plmnt1vklujvmr9hsk9zwpquk4waecr2u5vcyjd8vgm8")
|
|
addr2 := sdk.MustAccAddressFromBech32("plmnt1pwquxvqmmdry4gdel4g4rz0js7jy65453h92g7")
|
|
addr3 := sdk.MustAccAddressFromBech32("plmnt1dyuhg8ldu3d6nvhrvzzemtc3893dys9v9lvdty")
|
|
|
|
coin := sdk.NewCoins(sdk.NewInt64Coin("plmnt", 10))
|
|
msg1 := banktypes.NewMsgSend(addr0, addr1, coin)
|
|
msg2 := banktypes.NewMsgSend(addr0, addr2, coin)
|
|
msg3 := banktypes.NewMsgSend(addr0, addr3, coin)
|
|
|
|
txJSON, err := lib.BuildUnsignedTx(addr0, msg1, msg2, msg3)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Println(txJSON)
|
|
|
|
_, err = lib.BroadcastTx(addr0, msg1, msg2, msg3)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
```
|
|
|
|
Sample output:
|
|
```
|
|
$ go run main.go|jq
|
|
{
|
|
"body": {
|
|
"messages": [
|
|
{
|
|
"@type": "/cosmos.bank.v1beta1.MsgSend",
|
|
"from_address": "plmnt168z8fyyzap0nw75d4atv9ucr2ye60d57dzlzaf",
|
|
"to_address": "plmnt1vklujvmr9hsk9zwpquk4waecr2u5vcyjd8vgm8",
|
|
"amount": [
|
|
{
|
|
"denom": "plmnt",
|
|
"amount": "10"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"@type": "/cosmos.bank.v1beta1.MsgSend",
|
|
"from_address": "plmnt168z8fyyzap0nw75d4atv9ucr2ye60d57dzlzaf",
|
|
"to_address": "plmnt1pwquxvqmmdry4gdel4g4rz0js7jy65453h92g7",
|
|
"amount": [
|
|
{
|
|
"denom": "plmnt",
|
|
"amount": "10"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"@type": "/cosmos.bank.v1beta1.MsgSend",
|
|
"from_address": "plmnt168z8fyyzap0nw75d4atv9ucr2ye60d57dzlzaf",
|
|
"to_address": "plmnt1dyuhg8ldu3d6nvhrvzzemtc3893dys9v9lvdty",
|
|
"amount": [
|
|
{
|
|
"denom": "plmnt",
|
|
"amount": "10"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"memo": "",
|
|
"timeout_height": "0",
|
|
"extension_options": [],
|
|
"non_critical_extension_options": []
|
|
},
|
|
"auth_info": {
|
|
"signer_infos": [],
|
|
"fee": {
|
|
"amount": [
|
|
{
|
|
"denom": "plmnt",
|
|
"amount": "1"
|
|
}
|
|
],
|
|
"gas_limit": "200000",
|
|
"payer": "",
|
|
"granter": ""
|
|
},
|
|
"tip": null
|
|
},
|
|
"signatures": []
|
|
}
|
|
```
|