Add Sui Mainnet RPC URL & Update README.md
This commit is contained in:
639
README.md
639
README.md
@@ -9,30 +9,43 @@
|
||||
</p>
|
||||
|
||||
## Overview
|
||||
The Sui-Go-SDK provided by BlockVision aims to offer access to all resources in the BlockVision API and also offers some additional features that make the integration easier.
|
||||
|
||||
The Sui-Go-SDK provided by BlockVision aims to offer access to all resources in the BlockVision API and also offers some
|
||||
additional features that make the integration easier.
|
||||
Sui-Go-SDK is designed for Layer 1 BlockChain [Sui](https://github.com/MystenLabs/sui) in Go programming language.
|
||||
|
||||
### Features
|
||||
+ Support the mainstream methods in the Object, Coin, Event, Read Transaction Blocks, System Data, and Write Transaction Blocks modules.
|
||||
|
||||
+ Support the mainstream methods in the Object, Coin, Event, Read Transaction Blocks, System Data, and Write Transaction
|
||||
Blocks modules.
|
||||
+ Customized request method `SuiCall`.
|
||||
+ Unsigned methods can be executed without loading your keystore file.
|
||||
+ Provide the method `SignAndExecuteTransactionBlock` to send signed transaction.
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Install
|
||||
### Install
|
||||
|
||||
```shell
|
||||
go get github.com/block-vision/sui-go-sdk
|
||||
```
|
||||
|
||||
### Go Version
|
||||
|
||||
| Golang Version |
|
||||
|----------------|
|
||||
| \>= 1.20 |
|
||||
|
||||
## Examples
|
||||
|
||||
### Get started
|
||||
### Connecting to Sui Network
|
||||
|
||||
You can use the NewSuiClient method and pass in the RPC URL as an argument to easily connect to the Sui network.
|
||||
BlockVision provides the following free and fast Sui network endpoints:
|
||||
|
||||
+ MainNet: https://sui-mainnet-endpoint.blockvision.org
|
||||
+ TestNet: https://sui-testnet-endpoint.blockvision.org
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
@@ -40,15 +53,313 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// configure your endpoint here or use blockVision's free Sui RPC endpoint
|
||||
cli := sui.NewSuiClient("https://sui-testnet-endpoint.blockvision.org")
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
```
|
||||
|
||||
### Writing Transaction Blocks to Sui
|
||||
|
||||
#### Transfer Object
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/block-vision/sui-go-sdk/constant"
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/signer"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
"github.com/block-vision/sui-go-sdk/utils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
signerAccount, err := signer.NewSignertWithMnemonic("input your mnemonic")
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
priKey := signerAccount.PriKey
|
||||
fmt.Printf("signerAccount.Address: %s\n", signerAccount.Address)
|
||||
|
||||
rsp, err := cli.TransferObject(ctx, models.TransferObjectRequest{
|
||||
Signer: signerAccount.Address,
|
||||
ObjectId: "0x99b51302b66bd65b070cdb549b86e4b9aa7370cfddc70211c2b5a478140c7999",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "100000000",
|
||||
Recipient: "0xaf9f4d20c205f26051a7e1758601c4c47a9f99df3f9823f70926c17c80882d36",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// see the successful transaction url: https://explorer.sui.io/txblock/71xJsyNDRpGV96Dpw2FtjbWgJn2b5yP7KkYC13TGC5n9?network=testnet
|
||||
rsp2, err := cli.SignAndExecuteTransactionBlock(ctx, models.SignAndExecuteTransactionBlockRequest{
|
||||
TxnMetaData: rsp,
|
||||
PriKey: priKey,
|
||||
// only fetch the effects field
|
||||
Options: models.SuiTransactionBlockOptions{
|
||||
ShowInput: true,
|
||||
ShowRawInput: true,
|
||||
ShowEffects: true,
|
||||
},
|
||||
RequestType: "WaitForLocalExecution",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp2)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
#### Transfer Sui
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/block-vision/sui-go-sdk/constant"
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/signer"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
"github.com/block-vision/sui-go-sdk/utils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
signerAccount, err := signer.NewSignertWithMnemonic("input your mnemonic")
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
priKey := signerAccount.PriKey
|
||||
fmt.Printf("signerAccount.Address: %s\n", signerAccount.Address)
|
||||
|
||||
rsp, err := cli.TransferSui(ctx, models.TransferSuiRequest{
|
||||
Signer: signerAccount.Address,
|
||||
SuiObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "100000000",
|
||||
Recipient: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Amount: "1",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// see the successful transaction url: https://explorer.sui.io/txblock/C7iYsH4tU5RdY1KBeNax4mCBn3XLZ5UswsuDpKrVkcH6?network=testnet
|
||||
rsp2, err := cli.SignAndExecuteTransactionBlock(ctx, models.SignAndExecuteTransactionBlockRequest{
|
||||
TxnMetaData: rsp,
|
||||
PriKey: priKey,
|
||||
// only fetch the effects field
|
||||
Options: models.SuiTransactionBlockOptions{
|
||||
ShowInput: true,
|
||||
ShowRawInput: true,
|
||||
ShowEffects: true,
|
||||
},
|
||||
RequestType: "WaitForLocalExecution",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp2)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
#### Move Call
|
||||
|
||||
```go
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/block-vision/sui-go-sdk/constant"
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/signer"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
"github.com/block-vision/sui-go-sdk/utils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
signerAccount, err := signer.NewSignertWithMnemonic("input your mnemonic")
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
priKey := signerAccount.PriKey
|
||||
fmt.Printf("signerAccount.Address: %s\n", signerAccount.Address)
|
||||
|
||||
rsp, err := cli.MoveCall(ctx, models.MoveCallRequest{
|
||||
Signer: signerAccount.Address,
|
||||
PackageObjectId: "0x7d584c9a27ca4a546e8203b005b0e9ae746c9bec6c8c3c0bc84611bcf4ceab5f",
|
||||
Module: "auction",
|
||||
Function: "start_an_auction",
|
||||
TypeArguments: []interface{}{},
|
||||
Arguments: []interface{}{
|
||||
"0x342e959f8d9d1fa9327a05fd54fefd929bbedad47190bdbb58743d8ba3bd3420",
|
||||
"0x3fd0fdedb84cf1f59386b6251ba6dd2cb495094da26e0a5a38239acd9d437f96",
|
||||
"0xb3de4235cb04167b473de806d00ba351e5860500253cf8e62d711e578e1d92ae",
|
||||
"BlockVision",
|
||||
"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
},
|
||||
Gas: "0x58c103930dc52c0ab86319d99218e301596fda6fd80c4efafd7f4c9df1d0b6d0",
|
||||
GasBudget: "100000000",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// see the successful transaction url: https://explorer.sui.io/txblock/CD5hFB4bWFThhb6FtvKq3xAxRri72vsYLJAVd7p9t2sR?network=testnet
|
||||
rsp2, err := cli.SignAndExecuteTransactionBlock(ctx, models.SignAndExecuteTransactionBlockRequest{
|
||||
TxnMetaData: rsp,
|
||||
PriKey: priKey,
|
||||
// only fetch the effects field
|
||||
Options: models.SuiTransactionBlockOptions{
|
||||
ShowInput: true,
|
||||
ShowRawInput: true,
|
||||
ShowEffects: true,
|
||||
},
|
||||
RequestType: "WaitForLocalExecution",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp2)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
#### Merge coins
|
||||
|
||||
```go
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/block-vision/sui-go-sdk/constant"
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/signer"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
"github.com/block-vision/sui-go-sdk/utils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
signerAccount, err := signer.NewSignertWithMnemonic("puppy gate beyond civil bargain matter flock armed spy piece cook depart")
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
priKey := signerAccount.PriKey
|
||||
fmt.Printf("signerAccount.Address: %s\n", signerAccount.Address)
|
||||
|
||||
rsp, err := cli.MergeCoins(ctx, models.MergeCoinsRequest{
|
||||
Signer: signerAccount.Address,
|
||||
PrimaryCoin: "0x180fe0c159644fe4b376e4488498e524b2a564919775cb2719734a4699ae7b28",
|
||||
CoinToMerge: "0x3b4644f82b4dc339c17ed5f786f4050e1f765b38e9297ffdacdfc5ead482669f",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "100000000",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp)
|
||||
|
||||
// see the successful transaction url: https://explorer.sui.io/txblock/DZrnvnk67b27KQXisQA7VfnBUnga2SMnWNMY3UCZPG5a?network=testnet
|
||||
rsp2, err := cli.SignAndExecuteTransactionBlock(ctx, models.SignAndExecuteTransactionBlockRequest{
|
||||
TxnMetaData: rsp,
|
||||
PriKey: priKey,
|
||||
// only fetch the effects field
|
||||
Options: models.SuiTransactionBlockOptions{
|
||||
ShowInput: true,
|
||||
ShowRawInput: true,
|
||||
ShowEffects: true,
|
||||
},
|
||||
RequestType: "WaitForLocalExecution",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp2)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### Reading Data from Sui
|
||||
|
||||
#### Get the address all balance
|
||||
|
||||
Fetch all balance owned by the address `0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5`.
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/block-vision/sui-go-sdk/constant"
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
"github.com/block-vision/sui-go-sdk/utils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
rsp, err := cli.SuiXGetAllBalance(ctx, models.SuiXGetAllBalanceRequest{
|
||||
Owner: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
@@ -59,9 +370,9 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Println(rsp)
|
||||
utils.PrettyPrint(rsp)
|
||||
|
||||
//If you want to request for original json response data, you can use SuiCall().
|
||||
// If you want to request for original json response data, you can use SuiCall().
|
||||
callRsp, err := cli.SuiCall(ctx, "suix_getAllBalances", "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5")
|
||||
|
||||
if err != nil {
|
||||
@@ -69,21 +380,321 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Println(callRsp)
|
||||
utils.PrettyPrint(callRsp)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## Contribution
|
||||
+ We welcome your suggestions, comments (including criticisms), comments and contributions.
|
||||
+ Please follow the PR/issue template provided to ensure that your contributions are clear and easy to understand.
|
||||
+ Thank you to all the people who participate in building better infrastructure!
|
||||
#### Get Coin Metadata
|
||||
|
||||
Fetch coin metadata by the CoinType `0xf7a0b8cc24808220226301e102dae27464ea46e0d74bb968828318b9e3a921fa`.
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/block-vision/sui-go-sdk/constant"
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
"github.com/block-vision/sui-go-sdk/utils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
rsp, err := cli.SuiXGetCoinMetadata(ctx, models.SuiXGetCoinMetadataRequest{
|
||||
CoinType: "0xf7a0b8cc24808220226301e102dae27464ea46e0d74bb968828318b9e3a921fa::busd::BUSD",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
#### Get Owned Objects
|
||||
|
||||
Fetch objects owned by the address `0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5`.
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/block-vision/sui-go-sdk/constant"
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
"github.com/block-vision/sui-go-sdk/utils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
suiObjectResponseQuery := models.SuiObjectResponseQuery{
|
||||
// only fetch the effects field
|
||||
Options: models.SuiObjectDataOptions{
|
||||
ShowType: true,
|
||||
ShowContent: true,
|
||||
ShowBcs: true,
|
||||
ShowOwner: true,
|
||||
},
|
||||
}
|
||||
|
||||
rsp, err := cli.SuiXGetOwnedObjects(ctx, models.SuiXGetOwnedObjectsRequest{
|
||||
Address: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Query: suiObjectResponseQuery,
|
||||
Limit: 5,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
#### Get Object
|
||||
|
||||
Fetch object details for the object with id `0xeeb964d1e640219c8ddb791cc8548f3242a3392b143ff47484a3753291cad898`.
|
||||
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/block-vision/sui-go-sdk/constant"
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
"github.com/block-vision/sui-go-sdk/utils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
rsp, err := cli.SuiGetObject(ctx, models.SuiGetObjectRequest{
|
||||
ObjectId: "0xeeb964d1e640219c8ddb791cc8548f3242a3392b143ff47484a3753291cad898",
|
||||
// only fetch the effects field
|
||||
Options: models.SuiObjectDataOptions{
|
||||
ShowContent: true,
|
||||
ShowDisplay: true,
|
||||
ShowType: true,
|
||||
ShowBcs: true,
|
||||
ShowOwner: true,
|
||||
ShowPreviousTransaction: true,
|
||||
ShowStorageRebate: true,
|
||||
},
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
#### Get Transaction
|
||||
|
||||
Fetch transaction details with digests `CeVpDXKKU3Gs89efej9pKiYYQyTzifE2BDxWwquUaUht`.
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/block-vision/sui-go-sdk/constant"
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
"github.com/block-vision/sui-go-sdk/utils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
rsp, err := cli.SuiGetTransactionBlock(ctx, models.SuiGetTransactionBlockRequest{
|
||||
Digest: "CeVpDXKKU3Gs89efej9pKiYYQyTzifE2BDxWwquUaUht",
|
||||
// only fetch the effects field
|
||||
Options: models.SuiTransactionBlockOptions{
|
||||
ShowInput: true,
|
||||
ShowRawInput: true,
|
||||
ShowEffects: true,
|
||||
ShowEvents: true,
|
||||
ShowBalanceChanges: true,
|
||||
ShowObjectChanges: true,
|
||||
},
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp)
|
||||
|
||||
// fetch multiple transactions in one batch request
|
||||
rsp2, err := cli.SuiMultiGetTransactionBlocks(ctx, models.SuiMultiGetTransactionBlocksRequest{
|
||||
Digests: []string{"CeVpDXKKU3Gs89efej9pKiYYQyTzifE2BDxWwquUaUht", "C2zZu2dpX2sLQy2234yt6ecRiNTVgQTXeQpgw9GhxGgo"},
|
||||
// only fetch the effects field
|
||||
Options: models.SuiTransactionBlockOptions{
|
||||
ShowInput: true,
|
||||
ShowRawInput: true,
|
||||
ShowEffects: true,
|
||||
ShowEvents: true,
|
||||
ShowObjectChanges: true,
|
||||
ShowBalanceChanges: true,
|
||||
},
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
for _, transactionBlock := range rsp2 {
|
||||
utils.PrettyPrint(*transactionBlock)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
#### Get Checkpoints
|
||||
|
||||
Get latest 10 Checkpoints in descending order.
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/block-vision/sui-go-sdk/constant"
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
"github.com/block-vision/sui-go-sdk/utils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
rsp, err := cli.SuiGetCheckpoints(ctx, models.SuiGetCheckpointsRequest{
|
||||
Limit: 10,
|
||||
DescendingOrder: true,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp)
|
||||
|
||||
// fetch Checkpoint 1628214 and print details.
|
||||
rsp2, err := cli.SuiGetCheckpoint(ctx, models.SuiGetCheckpointRequest{
|
||||
CheckpointID: "1628214",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp2)
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
#### Query Events
|
||||
|
||||
Fetch event details with digests `CeVpDXKKU3Gs89efej9pKiYYQyTzifE2BDxWwquUaUht`.
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/block-vision/sui-go-sdk/constant"
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
"github.com/block-vision/sui-go-sdk/utils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
rsp, err := cli.SuiGetEvents(ctx, models.SuiGetEventsRequest{
|
||||
Digest: "HATq5p7MNynkBL5bLsdVqL3K38PxWHbqs7vndGiz5qrA",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp)
|
||||
|
||||
// fetch list of events for a specified query criteria.
|
||||
rsp2, err := cli.SuiXQueryEvents(ctx, models.SuiXQueryEventsRequest{
|
||||
SuiEventFilter: models.EventFilterByMoveEventType{
|
||||
MoveEventType: "0x3::validator::StakingRequestEvent",
|
||||
},
|
||||
Limit: 5,
|
||||
DescendingOrder: true,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp2)
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## Contribution
|
||||
|
||||
+ We welcome your suggestions, comments (including criticisms), comments and contributions.
|
||||
+ Please follow the PR/issue template provided to ensure that your contributions are clear and easy to understand.
|
||||
+ Thank you to all the people who participate in building better infrastructure!
|
||||
|
||||
## Resources
|
||||
|
||||
+ [SDK Examples](https://github.com/block-vision/sui-go-sdk/tree/main/examples)
|
||||
+ [Sui](https://github.com/MystenLabs/sui)
|
||||
|
||||
## License
|
||||
|
||||
## License
|
||||
[Apache 2.0 license](LICENSE)
|
||||
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
)
|
||||
|
||||
type KeyStoreConfig struct {
|
||||
Keys []string
|
||||
}
|
||||
|
||||
var keyStoreConfig KeyStoreConfig
|
||||
|
||||
func GetKeyStore(path string) (KeyStoreConfig, error) {
|
||||
err := loadConfig(path)
|
||||
return keyStoreConfig, err
|
||||
}
|
||||
|
||||
func loadConfig(dir string) error {
|
||||
f, err := os.Open(dir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
content, err := ioutil.ReadAll(f)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = json.Unmarshal(content, &keyStoreConfig.Keys)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
[
|
||||
"AQOf3sfviz7pkIN+qpZfeVrsidg3o39wCohnNS6hkmCzkRyGeALaqpP2iJ1LqWJsxxY2b6H6HLyPOoOhoiBi7SnZ",
|
||||
"AF6BUd9nBhR0h6hivei0nwcMe1N/GnrB7YecMu8G4yVp9hpOwpqaoCyxgSrHQsz1U0nlNKNVURrtyjfMoSRGKCw=",
|
||||
"ACCxbg6Y1dMH02D/RqgzeQLLlOJB6FancLCDSFZ0oe3XgaH5ViyVHCgu3+shKU4OpArSvXSzSSuyjLRd+zDijk0=",
|
||||
"AEQmSf8ZrgC5wsRKwUwLPxcaMD7TiUjp1SMxopHKY+/GbwLY2gyLSs7wMgwILoCJJbHLsSxHkVGEcka5L/UAe8o=",
|
||||
"ADNVM7XLQd7bx0YFqY4R6J+581liKIeKQWhETX1IO5aFpR6k8+RV/JkHAHJMnRbZTtmNOrERWHJxOzh4oLWY4i0=",
|
||||
"AKMI98sBlQLPXtvNKAu/DA7mDJACduEI/zqdIZzv9kBRARz/t75VC7TzR68ez6CYvWDtf7cXC0Ks1R0RuQJOm9c="
|
||||
]
|
||||
@@ -2,5 +2,7 @@ package constant
|
||||
|
||||
const (
|
||||
BvTestnetEndpoint = "https://sui-testnet-endpoint.blockvision.org"
|
||||
BvMainnetEndpoint = "https://sui-mainnet-endpoint.blockvision.org"
|
||||
SuiTestnetEndpoint = "https://fullnode.testnet.sui.io"
|
||||
SuiMainnetEndpoint = "https://fullnode.mainnet.sui.io"
|
||||
)
|
||||
|
||||
48
examples/event/main.go
Normal file
48
examples/event/main.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/block-vision/sui-go-sdk/constant"
|
||||
"github.com/block-vision/sui-go-sdk/models"
|
||||
"github.com/block-vision/sui-go-sdk/sui"
|
||||
"github.com/block-vision/sui-go-sdk/utils"
|
||||
)
|
||||
|
||||
var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
func main() {
|
||||
SuiGetEvents()
|
||||
SuiXQueryEvents()
|
||||
}
|
||||
|
||||
func SuiGetEvents() {
|
||||
rsp, err := cli.SuiGetEvents(ctx, models.SuiGetEventsRequest{
|
||||
Digest: "HATq5p7MNynkBL5bLsdVqL3K38PxWHbqs7vndGiz5qrA",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp)
|
||||
}
|
||||
|
||||
func SuiXQueryEvents() {
|
||||
rsp, err := cli.SuiXQueryEvents(ctx, models.SuiXQueryEventsRequest{
|
||||
SuiEventFilter: models.EventFilterByMoveEventType{
|
||||
MoveEventType: "0x3::validator::StakingRequestEvent",
|
||||
},
|
||||
Limit: 5,
|
||||
DescendingOrder: false,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp)
|
||||
}
|
||||
@@ -13,6 +13,7 @@ var ctx = context.Background()
|
||||
var cli = sui.NewSuiClient(constant.BvTestnetEndpoint)
|
||||
|
||||
func main() {
|
||||
SuiGetObject()
|
||||
SuiXGetOwnedObjects()
|
||||
SuiMultiGetObjects()
|
||||
SuiXGetDynamicField()
|
||||
@@ -20,6 +21,29 @@ func main() {
|
||||
SuiGetLoadedChildObjects()
|
||||
}
|
||||
|
||||
func SuiGetObject() {
|
||||
rsp, err := cli.SuiGetObject(ctx, models.SuiGetObjectRequest{
|
||||
ObjectId: "0xeeb964d1e640219c8ddb791cc8548f3242a3392b143ff47484a3753291cad898",
|
||||
Options: models.SuiObjectDataOptions{
|
||||
ShowContent: true,
|
||||
ShowDisplay: true,
|
||||
ShowType: true,
|
||||
ShowBcs: true,
|
||||
ShowOwner: true,
|
||||
ShowPreviousTransaction: true,
|
||||
ShowStorageRebate: true,
|
||||
},
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp)
|
||||
|
||||
}
|
||||
|
||||
func SuiXGetOwnedObjects() {
|
||||
suiObjectResponseQuery := models.SuiObjectResponseQuery{
|
||||
Filter: models.ObjectFilterByPackage{
|
||||
@@ -122,4 +146,4 @@ func SuiGetLoadedChildObjects() {
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ func SuiDryRunTransactionBlock() {
|
||||
|
||||
func SuiDevInspectTransactionBlock() {
|
||||
rsp, err := cli.SuiDevInspectTransactionBlock(ctx, models.SuiDevInspectTransactionBlockRequest{
|
||||
Sender: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Sender: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
TxBytes: "AAACAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQEAAAAAAAAAAQEAjgDW4hJZlqvw654RGR3SdndKkdjoC0pzXQLxja/NUahLowQAAAAAACBEQGwClI9RQX68dzbN7PN29/Pw/Sc1hbtZwNAny7wZ+wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMKc3VpX3N5c3RlbRZyZXF1ZXN0X3dpdGhkcmF3X3N0YWtlAAIBAAABAQC3+Y0yfxn2dDR+HkBkFAglMULW5+UJOnyW7ajN/X2btQEqzrI5x8BMQ6LjmCSgAykfjisdYCcyTfW79nyzDB/PvtZBpwAAAAAAIAm+IREDziwoZLm7lc4ZKegZ2J5viEgoss9zgrFkHLh6t/mNMn8Z9nQ0fh5AZBQIJTFC1uflCTp8lu2ozf19m7XoAwAAAAAAAFDhjyoAAAAAAA==",
|
||||
GasPrice: "1000",
|
||||
Epoch: "87",
|
||||
@@ -100,7 +100,7 @@ func SignAndExecuteTransactionBlock() {
|
||||
Signer: signerAccount.Address,
|
||||
SuiObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "100000000",
|
||||
Recipient: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
Amount: "1",
|
||||
})
|
||||
|
||||
@@ -215,7 +215,7 @@ func SuiXQueryTransactionBlocks() {
|
||||
|
||||
func MoveCall() {
|
||||
rsp, err := cli.MoveCall(ctx, models.MoveCallRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
PackageObjectId: "0x7d584c9a27ca4a546e8203b005b0e9ae746c9bec6c8c3c0bc84611bcf4ceab5f",
|
||||
Module: "auction",
|
||||
Function: "start_an_auction",
|
||||
@@ -225,9 +225,9 @@ func MoveCall() {
|
||||
"0x3fd0fdedb84cf1f59386b6251ba6dd2cb495094da26e0a5a38239acd9d437f96",
|
||||
"0xb3de4235cb04167b473de806d00ba351e5860500253cf8e62d711e578e1d92ae",
|
||||
"web3",
|
||||
"0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
},
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
|
||||
@@ -241,11 +241,11 @@ func MoveCall() {
|
||||
|
||||
func MergeCoins() {
|
||||
rsp, err := cli.MergeCoins(ctx, models.MergeCoinsRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
PrimaryCoin: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
PrimaryCoin: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
CoinToMerge: "0x92f03fdec6e0278dcb6fa3f4467eeee3e0bee1ac41825351ef53431677d2e2f7",
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
GasBudget: "1000",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000000",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
@@ -258,10 +258,10 @@ func MergeCoins() {
|
||||
|
||||
func SplitCoin() {
|
||||
rsp, err := cli.SplitCoin(ctx, models.SplitCoinRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
CoinObjectId: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
CoinObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
SplitAmounts: []string{"1000", "1000"},
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
|
||||
@@ -275,10 +275,10 @@ func SplitCoin() {
|
||||
|
||||
func SplitCoinEqual() {
|
||||
rsp, err := cli.SplitCoinEqual(ctx, models.SplitCoinEqualRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
CoinObjectId: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
CoinObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
SplitCount: "2",
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
|
||||
@@ -292,12 +292,12 @@ func SplitCoinEqual() {
|
||||
|
||||
func Publish() {
|
||||
rsp, err := cli.Publish(ctx, models.PublishRequest{
|
||||
Sender: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Sender: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
CompiledModules: []string{
|
||||
"oRzrCwUAAAALAQAOAg4kAzJZBIsBFgWhAZoBB7sC5wEIogQoBsoECgrUBBoM7gSjAQ2RBgQAAAEBAQIBAwEEAQUBBgAHCAAACAgAAAkIAAIKDAEAAQQLAgAGDAIAAxIEAAEUBAEAAQANAAEAAA4CAQAADwMBAAAQBAEAAhUHCAEAAhYJCgEAARcLDAEAARgNCAEAAxkEDgAGGg8QAAUFEQEBCAEVEwgBAAIbFBUBAAMcDgEAAR0BDAEABR4ZAQEIBAYFBgYGBwYKAwsGDAYKFgoXDgYPGAMHCAEHCwMBCAQHCAUAAwYIAgcIAQcIBQEIAAEHCAUCBwsHAQgECwcBCAQBCAQBBgsDAQkAAQMBBwsDAQkAAQcLBwEJAAIHCwcBCQADAQsHAQkAAgcLBwEJAAsHAQkAAQgGAQYIBQEFAgkABQIDCwMBCAQBBgsHAQkAAwcLBwEJAAMHCAUBCwMBCQABCwMBCAQBCAIBCAEBCQAGZG9udXRzB2JhbGFuY2UEY29pbgZvYmplY3QDc3VpCHRyYW5zZmVyCnR4X2NvbnRleHQFRG9udXQJRG9udXRTaG9wDFNob3BPd25lckNhcARDb2luA1NVSQlUeENvbnRleHQJYnV5X2RvbnV0D2NvbGxlY3RfcHJvZml0cwllYXRfZG9udXQEaW5pdAJpZANVSUQFcHJpY2UHQmFsYW5jZQV2YWx1ZQtiYWxhbmNlX211dAVzcGxpdARqb2luA25ldwZzZW5kZXIEdGFrZQZkZWxldGUEemVybwxzaGFyZV9vYmplY3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwgAAAAAAAAAAAACAREIBgECAxEIBhMDAQsHAQgEAgIBEQgGAAEEAAUmCgEuOAAKABAAFCYDEAsAAQsBAQsCAQcAJwsBOAEMAwsDCgAQABQ4AgwECwAPAQsEOAMBCgIRCBIACwIuEQk4BAIBAQQAEhAKARABOAUMAwsBDwELAwoCOAYMBAsECwIuEQk4BwICAQQADgYLABMADAELARENAgMAAAABDgoAEQgSAgoALhEJOAgLABEIBugDAAAAAAAAOAkSATgKAgEBAQIA",
|
||||
},
|
||||
Dependencies: []string{"0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe"},
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Dependencies: []string{"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1"},
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
|
||||
@@ -311,9 +311,9 @@ func Publish() {
|
||||
|
||||
func TransferObject() {
|
||||
rsp, err := cli.TransferObject(ctx, models.TransferObjectRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
ObjectId: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
ObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
})
|
||||
@@ -328,9 +328,9 @@ func TransferObject() {
|
||||
|
||||
func TransferSui() {
|
||||
rsp, err := cli.TransferSui(ctx, models.TransferSuiRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
SuiObjectId: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
GasBudget: "1000",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
SuiObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000000",
|
||||
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
Amount: "1",
|
||||
})
|
||||
@@ -345,12 +345,12 @@ func TransferSui() {
|
||||
|
||||
func Pay() {
|
||||
rsp, err := cli.Pay(ctx, models.PayRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
SuiObjectId: []string{"0x92f03fdec6e0278dcb6fa3f4467eeee3e0bee1ac41825351ef53431677d2e2f7"},
|
||||
Recipient: []string{"0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff"},
|
||||
Amount: []string{"1"},
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
GasBudget: "1000",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000000",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
@@ -363,11 +363,11 @@ func Pay() {
|
||||
|
||||
func PaySui() {
|
||||
rsp, err := cli.PaySui(ctx, models.PaySuiRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
SuiObjectId: []string{"0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe"},
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
SuiObjectId: []string{"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1"},
|
||||
Recipient: []string{"0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff"},
|
||||
Amount: []string{"1"},
|
||||
GasBudget: "1000",
|
||||
GasBudget: "1000000",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
@@ -380,10 +380,10 @@ func PaySui() {
|
||||
|
||||
func PayAllSui() {
|
||||
rsp, err := cli.PayAllSui(ctx, models.PayAllSuiRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
SuiObjectId: []string{"0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe"},
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
SuiObjectId: []string{"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1"},
|
||||
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
GasBudget: "1000",
|
||||
GasBudget: "1000000",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
@@ -396,11 +396,11 @@ func PayAllSui() {
|
||||
|
||||
func RequestAddStake() {
|
||||
rsp, err := cli.RequestAddStake(ctx, models.AddStakeRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Coins: []string{"0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe"},
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
Coins: []string{"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1"},
|
||||
Amount: "1",
|
||||
Validator: "0x884515e99dab69c4c28662149db81ca563ed4c36e0c8ce44a58e40e25a0a64a1",
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
|
||||
@@ -414,9 +414,9 @@ func RequestAddStake() {
|
||||
|
||||
func RequestWithdrawStake() {
|
||||
rsp, err := cli.RequestWithdrawStake(ctx, models.WithdrawStakeRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
StakedObjectId: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
StakedObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
|
||||
@@ -430,7 +430,7 @@ func RequestWithdrawStake() {
|
||||
|
||||
func BatchTransaction() {
|
||||
rsp, err := cli.BatchTransaction(ctx, models.BatchTransactionRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
RPCTransactionRequestParams: []models.RPCTransactionRequestParams{
|
||||
{
|
||||
MoveCallRequestParams: &models.MoveCallRequest{
|
||||
@@ -443,18 +443,18 @@ func BatchTransaction() {
|
||||
"0x3fd0fdedb84cf1f59386b6251ba6dd2cb495094da26e0a5a38239acd9d437f96",
|
||||
"0xb3de4235cb04167b473de806d00ba351e5860500253cf8e62d711e578e1d92ae",
|
||||
"web3",
|
||||
"0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
TransferObjectRequestParams: &models.TransferObjectRequest{
|
||||
ObjectId: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
ObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
},
|
||||
},
|
||||
},
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
SuiTransactionBlockBuilderMode: "DevInspect",
|
||||
})
|
||||
|
||||
@@ -47,6 +47,13 @@ type SuiObjectResponseQuery struct {
|
||||
Options SuiObjectDataOptions `json:"options"`
|
||||
}
|
||||
|
||||
type SuiGetObjectRequest struct {
|
||||
// the ID of the queried object
|
||||
ObjectId string `json:"ObjectId"`
|
||||
// config which fields to include in the response, by default only digest is included
|
||||
Options SuiObjectDataOptions `json:"options"`
|
||||
}
|
||||
|
||||
type SuiXGetOwnedObjectsRequest struct {
|
||||
// the owner's Sui address
|
||||
Address string `json:"address" validate:"checkAddress"`
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
)
|
||||
|
||||
type IReadObjectFromSuiAPI interface {
|
||||
SuiGetObject(ctx context.Context, req models.SuiGetObjectRequest) (models.SuiObjectData, error)
|
||||
SuiXGetOwnedObjects(ctx context.Context, req models.SuiXGetOwnedObjectsRequest) (models.PaginatedObjectsResponse, error)
|
||||
SuiMultiGetObjects(ctx context.Context, req models.SuiMultiGetObjectsRequest) ([]*models.SuiObjectResponse, error)
|
||||
SuiXGetDynamicField(ctx context.Context, req models.SuiXGetDynamicFieldRequest) (models.PaginatedDynamicFieldInfoResponse, error)
|
||||
@@ -25,6 +26,30 @@ type suiReadObjectFromSuiImpl struct {
|
||||
conn *httpconn.HttpConn
|
||||
}
|
||||
|
||||
// SuiGetObject implements the method `sui_getObject`, gets the object information for a specified object.
|
||||
func (s *suiReadObjectFromSuiImpl) SuiGetObject(ctx context.Context, req models.SuiGetObjectRequest) (models.SuiObjectData, error) {
|
||||
var rsp models.SuiObjectData
|
||||
|
||||
respBytes, err := s.conn.Request(ctx, httpconn.Operation{
|
||||
Method: "sui_getObject",
|
||||
Params: []interface{}{
|
||||
req.ObjectId,
|
||||
req.Options,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
return rsp, err
|
||||
}
|
||||
if gjson.ParseBytes(respBytes).Get("error").Exists() {
|
||||
return rsp, errors.New(gjson.ParseBytes(respBytes).Get("error").String())
|
||||
}
|
||||
err = json.Unmarshal([]byte(gjson.ParseBytes(respBytes).Get("result.data").String()), &rsp)
|
||||
if err != nil {
|
||||
return rsp, err
|
||||
}
|
||||
return rsp, nil
|
||||
}
|
||||
|
||||
// SuiXGetOwnedObjects implements the method `suix_getOwnedObjects`, gets the list of objects owned by an address.
|
||||
func (s *suiReadObjectFromSuiImpl) SuiXGetOwnedObjects(ctx context.Context, req models.SuiXGetOwnedObjectsRequest) (models.PaginatedObjectsResponse, error) {
|
||||
var rsp models.PaginatedObjectsResponse
|
||||
|
||||
167
sui/sui_test.go
167
sui/sui_test.go
@@ -133,7 +133,7 @@ func TestOnReadCoinFromSui(t *testing.T) {
|
||||
|
||||
t.Run("test on suix_getBalance", func(t *testing.T) {
|
||||
rsp, err := cli.SuiXGetBalance(ctx, models.SuiXGetBalanceRequest{
|
||||
Owner: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Owner: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
CoinType: "0x2::sui::SUI",
|
||||
})
|
||||
|
||||
@@ -147,7 +147,7 @@ func TestOnReadCoinFromSui(t *testing.T) {
|
||||
|
||||
t.Run("test on suix_getAllBalances", func(t *testing.T) {
|
||||
rsp, err := cli.SuiXGetAllBalance(ctx, models.SuiXGetAllBalanceRequest{
|
||||
Owner: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Owner: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
@@ -160,7 +160,7 @@ func TestOnReadCoinFromSui(t *testing.T) {
|
||||
|
||||
t.Run("test on suix_getCoins", func(t *testing.T) {
|
||||
rsp, err := cli.SuiXGetCoins(ctx, models.SuiXGetCoinsRequest{
|
||||
Owner: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Owner: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
CoinType: "0x2::sui::SUI",
|
||||
Limit: 5,
|
||||
})
|
||||
@@ -175,7 +175,7 @@ func TestOnReadCoinFromSui(t *testing.T) {
|
||||
|
||||
t.Run("test on suix_getAllCoins", func(t *testing.T) {
|
||||
rsp, err := cli.SuiXGetAllCoins(ctx, models.SuiXGetAllCoinsRequest{
|
||||
Owner: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Owner: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
Limit: 5,
|
||||
})
|
||||
|
||||
@@ -293,6 +293,27 @@ func TestOnReadTransactionFromSui(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestOnReadObjectFromSui(t *testing.T) {
|
||||
t.Run("test on sui_getObject", func(t *testing.T) {
|
||||
rsp, err := cli.SuiGetObject(ctx, models.SuiGetObjectRequest{
|
||||
ObjectId: "0xeeb964d1e640219c8ddb791cc8548f3242a3392b143ff47484a3753291cad898",
|
||||
Options: models.SuiObjectDataOptions{
|
||||
ShowContent: true,
|
||||
ShowDisplay: true,
|
||||
ShowType: true,
|
||||
ShowBcs: true,
|
||||
ShowOwner: true,
|
||||
ShowPreviousTransaction: true,
|
||||
ShowStorageRebate: true,
|
||||
},
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
t.Error(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp)
|
||||
})
|
||||
|
||||
t.Run("test on suix_getOwnedObjects", func(t *testing.T) {
|
||||
suiObjectResponseQuery := models.SuiObjectResponseQuery{
|
||||
@@ -444,7 +465,7 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
|
||||
t.Run("test on unsafe_moveCall", func(t *testing.T) {
|
||||
rsp, err := cli.MoveCall(ctx, models.MoveCallRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
PackageObjectId: "0x7d584c9a27ca4a546e8203b005b0e9ae746c9bec6c8c3c0bc84611bcf4ceab5f",
|
||||
Module: "auction",
|
||||
Function: "start_an_auction",
|
||||
@@ -454,9 +475,9 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
"0x3fd0fdedb84cf1f59386b6251ba6dd2cb495094da26e0a5a38239acd9d437f96",
|
||||
"0xb3de4235cb04167b473de806d00ba351e5860500253cf8e62d711e578e1d92ae",
|
||||
"web3",
|
||||
"0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
},
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
|
||||
@@ -471,10 +492,10 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
|
||||
t.Run("test on unsafe_mergeCoins", func(t *testing.T) {
|
||||
rsp, err := cli.MergeCoins(ctx, models.MergeCoinsRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
PrimaryCoin: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
PrimaryCoin: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
CoinToMerge: "0x92f03fdec6e0278dcb6fa3f4467eeee3e0bee1ac41825351ef53431677d2e2f7",
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
|
||||
@@ -488,12 +509,12 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
|
||||
t.Run("test on unsafe_publish", func(t *testing.T) {
|
||||
rsp, err := cli.Publish(ctx, models.PublishRequest{
|
||||
Sender: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Sender: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
CompiledModules: []string{
|
||||
"oRzrCwUAAAALAQAOAg4kAzJZBIsBFgWhAZoBB7sC5wEIogQoBsoECgrUBBoM7gSjAQ2RBgQAAAEBAQIBAwEEAQUBBgAHCAAACAgAAAkIAAIKDAEAAQQLAgAGDAIAAxIEAAEUBAEAAQANAAEAAA4CAQAADwMBAAAQBAEAAhUHCAEAAhYJCgEAARcLDAEAARgNCAEAAxkEDgAGGg8QAAUFEQEBCAEVEwgBAAIbFBUBAAMcDgEAAR0BDAEABR4ZAQEIBAYFBgYGBwYKAwsGDAYKFgoXDgYPGAMHCAEHCwMBCAQHCAUAAwYIAgcIAQcIBQEIAAEHCAUCBwsHAQgECwcBCAQBCAQBBgsDAQkAAQMBBwsDAQkAAQcLBwEJAAIHCwcBCQADAQsHAQkAAgcLBwEJAAsHAQkAAQgGAQYIBQEFAgkABQIDCwMBCAQBBgsHAQkAAwcLBwEJAAMHCAUBCwMBCQABCwMBCAQBCAIBCAEBCQAGZG9udXRzB2JhbGFuY2UEY29pbgZvYmplY3QDc3VpCHRyYW5zZmVyCnR4X2NvbnRleHQFRG9udXQJRG9udXRTaG9wDFNob3BPd25lckNhcARDb2luA1NVSQlUeENvbnRleHQJYnV5X2RvbnV0D2NvbGxlY3RfcHJvZml0cwllYXRfZG9udXQEaW5pdAJpZANVSUQFcHJpY2UHQmFsYW5jZQV2YWx1ZQtiYWxhbmNlX211dAVzcGxpdARqb2luA25ldwZzZW5kZXIEdGFrZQZkZWxldGUEemVybwxzaGFyZV9vYmplY3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwgAAAAAAAAAAAACAREIBgECAxEIBhMDAQsHAQgEAgIBEQgGAAEEAAUmCgEuOAAKABAAFCYDEAsAAQsBAQsCAQcAJwsBOAEMAwsDCgAQABQ4AgwECwAPAQsEOAMBCgIRCBIACwIuEQk4BAIBAQQAEhAKARABOAUMAwsBDwELAwoCOAYMBAsECwIuEQk4BwICAQQADgYLABMADAELARENAgMAAAABDgoAEQgSAgoALhEJOAgLABEIBugDAAAAAAAAOAkSATgKAgEBAQIA",
|
||||
},
|
||||
Dependencies: []string{"0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe"},
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Dependencies: []string{"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1"},
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
|
||||
@@ -507,10 +528,10 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
|
||||
t.Run("test on unsafe_splitCoin", func(t *testing.T) {
|
||||
rsp, err := cli.SplitCoin(ctx, models.SplitCoinRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
CoinObjectId: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
CoinObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
SplitAmounts: []string{"1000", "1000"},
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
|
||||
@@ -524,10 +545,10 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
|
||||
t.Run("test on unsafe_splitCoinEqual", func(t *testing.T) {
|
||||
rsp, err := cli.SplitCoinEqual(ctx, models.SplitCoinEqualRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
CoinObjectId: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
CoinObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
SplitCount: "2",
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
|
||||
@@ -541,9 +562,9 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
|
||||
t.Run("test on unsafe_transferObject", func(t *testing.T) {
|
||||
rsp, err := cli.TransferObject(ctx, models.TransferObjectRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
ObjectId: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
ObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
})
|
||||
@@ -558,8 +579,8 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
|
||||
t.Run("test on unsafe_transferSui", func(t *testing.T) {
|
||||
rsp, err := cli.TransferSui(ctx, models.TransferSuiRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
SuiObjectId: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
SuiObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
Amount: "1",
|
||||
@@ -575,11 +596,11 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
|
||||
t.Run("test on unsafe_pay", func(t *testing.T) {
|
||||
rsp, err := cli.Pay(ctx, models.PayRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
SuiObjectId: []string{"0x92f03fdec6e0278dcb6fa3f4467eeee3e0bee1ac41825351ef53431677d2e2f7"},
|
||||
Recipient: []string{"0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff"},
|
||||
Amount: []string{"1"},
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
|
||||
@@ -593,8 +614,8 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
|
||||
t.Run("test on unsafe_paySui", func(t *testing.T) {
|
||||
rsp, err := cli.PaySui(ctx, models.PaySuiRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
SuiObjectId: []string{"0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe"},
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
SuiObjectId: []string{"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1"},
|
||||
Recipient: []string{"0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff"},
|
||||
Amount: []string{"1"},
|
||||
GasBudget: "1000",
|
||||
@@ -610,8 +631,8 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
|
||||
t.Run("test on unsafe_payAllSui", func(t *testing.T) {
|
||||
rsp, err := cli.PayAllSui(ctx, models.PayAllSuiRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
SuiObjectId: []string{"0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe"},
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
SuiObjectId: []string{"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1"},
|
||||
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
GasBudget: "1000",
|
||||
})
|
||||
@@ -626,7 +647,7 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
|
||||
t.Run("test on unsafe_batchTransaction", func(t *testing.T) {
|
||||
rsp, err := cli.BatchTransaction(ctx, models.BatchTransactionRequest{
|
||||
Signer: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
RPCTransactionRequestParams: []models.RPCTransactionRequestParams{
|
||||
{
|
||||
MoveCallRequestParams: &models.MoveCallRequest{
|
||||
@@ -639,18 +660,18 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
"0x3fd0fdedb84cf1f59386b6251ba6dd2cb495094da26e0a5a38239acd9d437f96",
|
||||
"0xb3de4235cb04167b473de806d00ba351e5860500253cf8e62d711e578e1d92ae",
|
||||
"web3",
|
||||
"0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
TransferObjectRequestParams: &models.TransferObjectRequest{
|
||||
ObjectId: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
ObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
},
|
||||
},
|
||||
},
|
||||
Gas: "0x2aceb239c7c04c43a2e39824a003291f8e2b1d6027324df5bbf67cb30c1fcfbe",
|
||||
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "1000",
|
||||
SuiTransactionBlockBuilderMode: "DevInspect",
|
||||
})
|
||||
@@ -664,47 +685,47 @@ func TestOnWriteTransactionToSui(t *testing.T) {
|
||||
})
|
||||
|
||||
/*
|
||||
t.Run("test on SignAndExecuteTransactionBlock", func(t *testing.T) {
|
||||
signerAccount, err := signer.NewSignertWithMnemonic("input your mnemonic")
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
priKey := signerAccount.PriKey
|
||||
fmt.Printf("signerAccount.Address: %s\n", signerAccount.Address)
|
||||
t.Run("test on SignAndExecuteTransactionBlock", func(t *testing.T) {
|
||||
signerAccount, err := signer.NewSignertWithMnemonic("input your mnemonic")
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
priKey := signerAccount.PriKey
|
||||
fmt.Printf("signerAccount.Address: %s\n", signerAccount.Address)
|
||||
|
||||
rsp, err := cli.TransferSui(ctx, models.TransferSuiRequest{
|
||||
Signer: signerAccount.Address,
|
||||
SuiObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "100000000",
|
||||
Recipient: "0xb7f98d327f19f674347e1e40641408253142d6e7e5093a7c96eda8cdfd7d9bb5",
|
||||
Amount: "1",
|
||||
rsp, err := cli.TransferSui(ctx, models.TransferSuiRequest{
|
||||
Signer: signerAccount.Address,
|
||||
SuiObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
||||
GasBudget: "100000000",
|
||||
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
||||
Amount: "1",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
// see the successful transaction url: https://suivision.xyz/txblock/C7iYsH4tU5RdY1KBeNax4mCBn3XLZ5UswsuDpKrVkcH6
|
||||
rsp2, err := cli.SignAndExecuteTransactionBlock(ctx, models.SignAndExecuteTransactionBlockRequest{
|
||||
TxnMetaData: rsp,
|
||||
PriKey: priKey,
|
||||
Options: models.SuiTransactionBlockOptions{
|
||||
ShowInput: true,
|
||||
ShowRawInput: true,
|
||||
ShowEffects: true,
|
||||
},
|
||||
RequestType: "WaitForLocalExecution",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp2)
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
// see the successful transaction url: https://suivision.xyz/txblock/C7iYsH4tU5RdY1KBeNax4mCBn3XLZ5UswsuDpKrVkcH6
|
||||
rsp2, err := cli.SignAndExecuteTransactionBlock(ctx, models.SignAndExecuteTransactionBlockRequest{
|
||||
TxnMetaData: rsp,
|
||||
PriKey: priKey,
|
||||
Options: models.SuiTransactionBlockOptions{
|
||||
ShowInput: true,
|
||||
ShowRawInput: true,
|
||||
ShowEffects: true,
|
||||
},
|
||||
RequestType: "WaitForLocalExecution",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
t.FailNow()
|
||||
}
|
||||
|
||||
utils.PrettyPrint(rsp2)
|
||||
})
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user