Merge pull request #38 from pymongo/main

Fix: SuiDevInspectTransactionBlock example and parse results in rsp
This commit is contained in:
Jayden
2024-10-21 11:01:08 +08:00
committed by GitHub
3 changed files with 28 additions and 12 deletions

View File

@@ -2,6 +2,7 @@ package main
import (
"context"
"encoding/json"
"fmt"
"github.com/block-vision/sui-go-sdk/constant"
@@ -34,6 +35,7 @@ func main() {
//BatchTransaction()
//SuiExecuteTransactionBlock()
//SuiDryRunTransactionBlock()
//SuiDevInspectTransactionBlock()
//SignAndExecuteTransactionBlock()
}
@@ -72,11 +74,12 @@ func SuiDryRunTransactionBlock() {
}
func SuiDevInspectTransactionBlock() {
type moveCallResult struct {
ReturnValues [2]interface{}
}
rsp, err := cli.SuiDevInspectTransactionBlock(ctx, models.SuiDevInspectTransactionBlockRequest{
Sender: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
TxBytes: "AAACAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQEAAAAAAAAAAQEAjgDW4hJZlqvw654RGR3SdndKkdjoC0pzXQLxja/NUahLowQAAAAAACBEQGwClI9RQX68dzbN7PN29/Pw/Sc1hbtZwNAny7wZ+wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMKc3VpX3N5c3RlbRZyZXF1ZXN0X3dpdGhkcmF3X3N0YWtlAAIBAAABAQC3+Y0yfxn2dDR+HkBkFAglMULW5+UJOnyW7ajN/X2btQEqzrI5x8BMQ6LjmCSgAykfjisdYCcyTfW79nyzDB/PvtZBpwAAAAAAIAm+IREDziwoZLm7lc4ZKegZ2J5viEgoss9zgrFkHLh6t/mNMn8Z9nQ0fh5AZBQIJTFC1uflCTp8lu2ozf19m7XoAwAAAAAAAFDhjyoAAAAAAA==",
GasPrice: "1000",
Epoch: "87",
TxBytes: "AAUBAFIMicbHjFZu7Q6/JPhUqMItj90GpvFq0B8Qja1/G6rqFSjPCgAAAAAgU+6E0DJf97dwaRV0MdseKxCPU97monpYtyfJSa7jKQAACKCGAQAAAAAAAAiAlpgAAAAAAAABAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYtKc8KAAAAACBhjSVWnhYSnxbZuJWgDlXi2j3pp7gqJJizx29rU/Ly+QEAy/R0ipZdRp6jo2zwzMV0O5bC0K5t7gdi7T7KZfrAf34EcG9vbBBnZXRfbGV2ZWwyX3JhbmdlAgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgNzdWkDU1VJAAf3FSwFkwSAzXQNcxG1uLRcb0iOOlOhHD90pvrDalLg1wZEQlVTREMGREJVU0RDAAUBAAABAQABAgABAwABBAA=",
})
if err != nil {
@@ -84,6 +87,12 @@ func SuiDevInspectTransactionBlock() {
return
}
var moveCallReturn []moveCallResult
err = json.Unmarshal(rsp.Results, &moveCallReturn)
if err != nil {
fmt.Println("json", err.Error())
return
}
utils.PrettyPrint(rsp)
}

View File

@@ -199,6 +199,7 @@ type SuiTransactionBlockResponse struct {
TimestampMs string `json:"timestampMs,omitempty"`
Checkpoint string `json:"checkpoint,omitempty"`
ConfirmedLocalExecution bool `json:"confirmedLocalExecution,omitempty"`
Results json.RawMessage `json:"results,omitempty"`
}
func (o ObjectChange) GetObjectChangeAddressOwner() string {

View File

@@ -139,23 +139,29 @@ func (s *suiReadTransactionFromSuiImpl) SuiDryRunTransactionBlock(ctx context.Co
// Which allows for nearly any transaction (or Move call) with any arguments.
// Detailed results are provided, including both the transaction effects and any return values.
func (s *suiReadTransactionFromSuiImpl) SuiDevInspectTransactionBlock(ctx context.Context, req models.SuiDevInspectTransactionBlockRequest) (models.SuiTransactionBlockResponse, error) {
params := []interface{}{
req.Sender,
req.TxBytes,
}
if req.GasPrice != "" {
params = append(params, req.GasPrice)
}
if req.Epoch != "" {
params = append(params, req.Epoch)
}
var rsp models.SuiTransactionBlockResponse
respBytes, err := s.conn.Request(ctx, httpconn.Operation{
Method: "sui_devInspectTransactionBlock",
Params: []interface{}{
req.Sender,
req.TxBytes,
req.GasPrice,
req.Epoch,
},
Params: params,
})
if err != nil {
return rsp, err
}
if gjson.ParseBytes(respBytes).Get("error").Exists() {
return rsp, errors.New(gjson.ParseBytes(respBytes).Get("error").String())
parsedJson := gjson.ParseBytes(respBytes)
if parsedJson.Get("error").Exists() {
return rsp, errors.New(parsedJson.Get("error").String())
}
err = json.Unmarshal([]byte(gjson.ParseBytes(respBytes).Get("result").Raw), &rsp)
err = json.Unmarshal([]byte(parsedJson.Get("result").Raw), &rsp)
if err != nil {
return rsp, err
}