-
Notifications
You must be signed in to change notification settings - Fork 96
/
simulate_transaction.go
49 lines (39 loc) · 2.27 KB
/
simulate_transaction.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package rpc
import (
"context"
)
type SimulateTransactionResponse JsonRpcResponse[SimulateTransaction]
type SimulateTransaction ValueWithContext[SimulateTransactionValue]
// SimulateTransactionValue is a part of SimulateTransactionResponseResult
type SimulateTransactionValue struct {
Err any `json:"err"`
Logs []string `json:"logs,omitempty"`
Accounts []*AccountInfo `json:"accounts,omitempty"`
ReturnData *ReturnData `json:"returnData,omitempty"`
UnitConsumed *uint64 `json:"unitsConsumed,omitempty"`
}
type SimulateTransactionConfig struct {
SigVerify bool `json:"sigVerify,omitempty"` // default: false, conflicts with replace blockhash
Commitment Commitment `json:"commitment,omitempty"` // default: finalized
Encoding SimulateTransactionEncoding `json:"encoding,omitempty"` // default: "base58"
ReplaceRecentBlockhash bool `json:"replaceRecentBlockhash,omitempty"` // default: false, conflicts with sigVerify
Accounts *SimulateTransactionConfigAccounts `json:"accounts,omitempty"`
}
type SimulateTransactionConfigAccounts struct {
Encoding AccountEncoding `json:"encoding,omitempty"`
// An array of accounts to return, as base-58 encoded strings
Addresses []string `json:"addresses"`
}
type SimulateTransactionEncoding string
const (
SimulateTransactionEncodingBase58 SimulateTransactionEncoding = "base58"
SimulateTransactionEncodingBase64 SimulateTransactionEncoding = "base64"
)
// SimulateTransaction simulate sending a transaction
func (c *RpcClient) SimulateTransaction(ctx context.Context, rawTx string) (JsonRpcResponse[ValueWithContext[SimulateTransactionValue]], error) {
return call[JsonRpcResponse[ValueWithContext[SimulateTransactionValue]]](c, ctx, "simulateTransaction", rawTx)
}
// SimulateTransaction simulate sending a transaction
func (c *RpcClient) SimulateTransactionWithConfig(ctx context.Context, rawTx string, cfg SimulateTransactionConfig) (JsonRpcResponse[ValueWithContext[SimulateTransactionValue]], error) {
return call[JsonRpcResponse[ValueWithContext[SimulateTransactionValue]]](c, ctx, "simulateTransaction", rawTx, cfg)
}