diff --git a/crypto/bech32/bech32.go b/crypto/bech32/bech32.go index f57289f5..7bbc2047 100644 --- a/crypto/bech32/bech32.go +++ b/crypto/bech32/bech32.go @@ -11,7 +11,9 @@ const charset = "qpzry9x8gf2tvdw0s3jn54khce6mua7l" var gen = []int{0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3} const BECH32M_CONST = 0x2bc830a3 + type Encoding uint + const ( BECH32 Encoding = iota BECH32M @@ -42,7 +44,7 @@ func Decode(bech string) (Encoding, string, []byte, error) { decoded, err := toBytes(data) if err != nil { - return BECH32, "", nil, errors.New(fmt.Sprintf("failed converting data to bytes: %v", err)) + return BECH32, "", nil, errors.New(fmt.Sprintf("failed converting data to bytes: %v", err)) } ints := make([]int, len(decoded)) diff --git a/crypto/secp256k1/key_test.go b/crypto/secp256k1/key_test.go index 34843739..8bb5191f 100644 --- a/crypto/secp256k1/key_test.go +++ b/crypto/secp256k1/key_test.go @@ -15,4 +15,4 @@ func TestPubKey(t *testing.T) { assert.Equal(t, common.FromHex("0x04a0a7a7597b019828a1dda6ed52ab25181073ec3a9825d28b9abbb932fe1ec83dd117a8eef7649c25be5a591d08f80ffe7e9c14100ad1b58ac78afa606a576453"), encoded) encoded = k.PubKey() assert.Equal(t, common.FromHex("0x03a0a7a7597b019828a1dda6ed52ab25181073ec3a9825d28b9abbb932fe1ec83d"), encoded) -} \ No newline at end of file +} diff --git a/indexer/indexer_test.go b/indexer/indexer_test.go index 4e4ec8eb..e83bff9b 100644 --- a/indexer/indexer_test.go +++ b/indexer/indexer_test.go @@ -78,7 +78,7 @@ func TestGetCellsMaxLimit(t *testing.T) { } resp, err := c.GetCells(context.Background(), s, SearchOrderAsc, math.MaxUint32, "") checkError(t, err) - // TODO fix later + // TODO fix later // assert.Equal(t, 36, len(resp.Objects)) // Check response when `WithData` == true in request diff --git a/rpc/client.go b/rpc/client.go index be721eb5..d565c881 100644 --- a/rpc/client.go +++ b/rpc/client.go @@ -152,6 +152,9 @@ type Client interface { // SendTransaction send new transaction into transaction pool. SendTransaction(ctx context.Context, tx *types.Transaction) (*types.Hash, error) + // SendTestTransaction send new transaction into transaction pool. + SendTestTransaction(ctx context.Context, tx *types.Transaction) (*types.Hash, error) + /// Test if a transaction can be accepted by the transaction pool without inserting it into the pool or rebroadcasting it to peers. /// The parameters and errors of this method are the same as `send_transaction`. TestTxPoolAccept(ctx context.Context, tx *types.Transaction) (*types.EntryCompleted, error) @@ -167,6 +170,9 @@ type Client interface { // ClearTxPool Removes all transactions from the transaction pool. ClearTxPool(ctx context.Context) error + // Removes all transactions from the verification queue. + ClearTxVerifyQueue(ctx context.Context) error + ////// Stats // GetBlockchainInfo return state info of blockchain GetBlockchainInfo(ctx context.Context) (*types.BlockchainInfo, error) @@ -685,6 +691,17 @@ func (cli *client) SendTransaction(ctx context.Context, tx *types.Transaction) ( return &result, err } +func (cli *client) SendTestTransaction(ctx context.Context, tx *types.Transaction) (*types.Hash, error) { + var result types.Hash + + err := cli.c.CallContext(ctx, &result, "send_test_transaction", *tx, "passthrough") + if err != nil { + return nil, err + } + + return &result, err +} + // TestTxPoolAccept(ctx context.Context, tx *types.Transaction) (*types.EntryCompleted, error) func (cli *client) TestTxPoolAccept(ctx context.Context, tx *types.Transaction) (*types.EntryCompleted, error) { var result types.EntryCompleted @@ -728,6 +745,10 @@ func (cli *client) ClearTxPool(ctx context.Context) error { return cli.c.CallContext(ctx, nil, "clear_tx_pool") } +func (cli *client) ClearTxVerifyQueue(ctx context.Context) error { + return cli.c.CallContext(ctx, nil, "clear_tx_verify_queue") +} + func (cli *client) GetBlockchainInfo(ctx context.Context) (*types.BlockchainInfo, error) { var result types.BlockchainInfo err := cli.c.CallContext(ctx, &result, "get_blockchain_info") diff --git a/types/chain.go b/types/chain.go index bc5b6967..c5e0612e 100644 --- a/types/chain.go +++ b/types/chain.go @@ -231,9 +231,11 @@ type CellWithStatus struct { } type TxStatus struct { - Status TransactionStatus `json:"status"` - BlockHash *Hash `json:"block_hash"` - Reason *string `json:"reason"` + Status TransactionStatus `json:"status"` + BlockHash *Hash `json:"block_hash"` + BlockNumber *uint64 `json:"block_number"` + TxIndex *uint `json:"tx_index"` + Reason *string `json:"reason"` } type TransactionWithStatus struct { diff --git a/types/json.go b/types/json.go index ec4df79f..eae617f7 100644 --- a/types/json.go +++ b/types/json.go @@ -413,6 +413,10 @@ type jsonSyncState struct { FastTime hexutil.Uint64 `json:"fast_time"` LowTime hexutil.Uint64 `json:"low_time"` NormalTime hexutil.Uint64 `json:"normal_time"` + TipHash Hash `json:"tip_hash"` + TipNumber hexutil.Uint64 `json:"tip_number"` + UnverifiedTipHash Hash `json:"unverified_tip_hash"` + UnverifiedTipNumber hexutil.Uint64 `json:"unverified_tip_number"` } func (t *SyncState) UnmarshalJSON(input []byte) error { @@ -429,6 +433,10 @@ func (t *SyncState) UnmarshalJSON(input []byte) error { FastTime: uint64(jsonObj.FastTime), LowTime: uint64(jsonObj.LowTime), NormalTime: uint64(jsonObj.NormalTime), + TipHash: jsonObj.TipHash, + TipNumber: uint64(jsonObj.TipNumber), + UnverifiedTipHash: jsonObj.UnverifiedTipHash, + UnverifiedTipNumber: uint64(jsonObj.UnverifiedTipNumber), } return nil } diff --git a/types/net.go b/types/net.go index b5ab6697..42536275 100644 --- a/types/net.go +++ b/types/net.go @@ -66,4 +66,8 @@ type SyncState struct { FastTime uint64 `json:"fast_time"` LowTime uint64 `json:"low_time"` NormalTime uint64 `json:"normal_time"` + TipHash Hash `json:"tip_hash"` + TipNumber uint64 `json:"tip_number"` + UnverifiedTipHash Hash `json:"unverified_tip_hash"` + UnverifiedTipNumber uint64 `json:"unverified_tip_number"` } diff --git a/types/pool.go b/types/pool.go index ba02cecf..494920e4 100644 --- a/types/pool.go +++ b/types/pool.go @@ -1,15 +1,19 @@ package types type TxPoolInfo struct { - TipHash Hash `json:"tip_hash"` - TipNumber uint64 `json:"tip_number"` + LastTxsUpdatedAt uint64 `json:"last_txs_updated_at"` + MaxTxPoolSize uint64 `json:"max_tx_pool_size"` + MinFeeRate uint64 `json:"min_fee_rate"` + MinRbfRate uint64 `json:"min_fee_rate"` + Orphan uint64 `json:"orphan"` Pending uint64 `json:"pending"` Proposed uint64 `json:"proposed"` - Orphan uint64 `json:"orphan"` - TotalTxSize uint64 `json:"total_tx_size"` + TipHash Hash `json:"tip_hash"` + TipNumber uint64 `json:"tip_number"` TotalTxCycles uint64 `json:"total_tx_cycles"` - MinFeeRate uint64 `json:"min_fee_rate"` - LastTxsUpdatedAt uint64 `json:"last_txs_updated_at"` + TotalTxSize uint64 `json:"total_tx_size"` + TxSizeLimit uint64 `json:"tx_size_limit"` + VerifyQueueSize uint64 `json:"verify_queue_size"` } type RawTxPool struct {