planetmint-go/lib/README.md
Julian Strobl f957f540a1
Refactor lib (#254)
* refactor: remove unwanted function in `lib`

The `lib` shall always be used with file lock.

* refactor: log `txResponse` in `buildSignBroadcastTx`

- Move `GetTxResponseFromOut` from `testutil` to `lib`

Signed-off-by: Julian Strobl <jmastr@mailbox.org>
2024-01-03 10:41:09 +01:00

118 lines
3.4 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.BroadcastTxWithFileLock(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": []
}
```