Merge pull request #1914 from flicker-harmony/pr_api_small_update

Make staking txs optional in blocks
pull/1920/head
Rongjian Lan 5 years ago committed by GitHub
commit 6cfb8c58ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      internal/hmyapi/blockchain.go
  2. 30
      internal/hmyapi/types.go

@ -48,6 +48,7 @@ type BlockArgs struct {
InclTx bool `json:"inclTx"` InclTx bool `json:"inclTx"`
FullTx bool `json:"fullTx"` FullTx bool `json:"fullTx"`
Signers []string `json:"signers"` Signers []string `json:"signers"`
InclStaking bool `json:"inclStaking"`
} }
// GetBlockByNumber returns the requested block. When blockNr is -1 the chain head is returned. When fullTx is true all // GetBlockByNumber returns the requested block. When blockNr is -1 the chain head is returned. When fullTx is true all
@ -55,7 +56,7 @@ type BlockArgs struct {
func (s *PublicBlockChainAPI) GetBlockByNumber(ctx context.Context, blockNr rpc.BlockNumber, fullTx bool) (map[string]interface{}, error) { func (s *PublicBlockChainAPI) GetBlockByNumber(ctx context.Context, blockNr rpc.BlockNumber, fullTx bool) (map[string]interface{}, error) {
block, err := s.b.BlockByNumber(ctx, blockNr) block, err := s.b.BlockByNumber(ctx, blockNr)
if block != nil { if block != nil {
blockArgs := BlockArgs{WithSigners: false, InclTx: true, FullTx: fullTx} blockArgs := BlockArgs{WithSigners: false, InclTx: true, FullTx: fullTx, InclStaking: false}
response, err := RPCMarshalBlock(block, blockArgs) response, err := RPCMarshalBlock(block, blockArgs)
if err == nil && blockNr == rpc.PendingBlockNumber { if err == nil && blockNr == rpc.PendingBlockNumber {
// Pending blocks need to nil out a few fields // Pending blocks need to nil out a few fields
@ -73,7 +74,7 @@ func (s *PublicBlockChainAPI) GetBlockByNumber(ctx context.Context, blockNr rpc.
func (s *PublicBlockChainAPI) GetBlockByHash(ctx context.Context, blockHash common.Hash, fullTx bool) (map[string]interface{}, error) { func (s *PublicBlockChainAPI) GetBlockByHash(ctx context.Context, blockHash common.Hash, fullTx bool) (map[string]interface{}, error) {
block, err := s.b.GetBlock(ctx, blockHash) block, err := s.b.GetBlock(ctx, blockHash)
if block != nil { if block != nil {
blockArgs := BlockArgs{WithSigners: false, InclTx: true, FullTx: fullTx} blockArgs := BlockArgs{WithSigners: false, InclTx: true, FullTx: fullTx, InclStaking: false}
return RPCMarshalBlock(block, blockArgs) return RPCMarshalBlock(block, blockArgs)
} }
return nil, err return nil, err

@ -389,14 +389,6 @@ func RPCMarshalBlock(b *types.Block, blockArgs BlockArgs) (map[string]interface{
return newRPCTransactionFromBlockHash(b, tx.Hash()), nil return newRPCTransactionFromBlockHash(b, tx.Hash()), nil
} }
} }
formatStakingTx := func(tx *types2.StakingTransaction) (interface{}, error) {
return tx.Hash(), nil
}
if blockArgs.FullTx {
formatStakingTx = func(tx *types2.StakingTransaction) (interface{}, error) {
return newRPCStakingTransactionFromBlockHash(b, tx.Hash()), nil
}
}
txs := b.Transactions() txs := b.Transactions()
transactions := make([]interface{}, len(txs)) transactions := make([]interface{}, len(txs))
var err error var err error
@ -407,14 +399,24 @@ func RPCMarshalBlock(b *types.Block, blockArgs BlockArgs) (map[string]interface{
} }
fields["transactions"] = transactions fields["transactions"] = transactions
stakingTxs := b.StakingTransactions() if blockArgs.InclStaking {
stakingTransactions := make([]interface{}, len(stakingTxs)) formatStakingTx := func(tx *types2.StakingTransaction) (interface{}, error) {
for i, tx := range stakingTxs { return tx.Hash(), nil
if stakingTransactions[i], err = formatStakingTx(tx); err != nil { }
return nil, err if blockArgs.FullTx {
formatStakingTx = func(tx *types2.StakingTransaction) (interface{}, error) {
return newRPCStakingTransactionFromBlockHash(b, tx.Hash()), nil
}
}
stakingTxs := b.StakingTransactions()
stakingTransactions := make([]interface{}, len(stakingTxs))
for i, tx := range stakingTxs {
if stakingTransactions[i], err = formatStakingTx(tx); err != nil {
return nil, err
}
} }
fields["stakingTransactions"] = stakingTransactions
} }
fields["stakingTransactions"] = stakingTransactions
} }
uncles := b.Uncles() uncles := b.Uncles()

Loading…
Cancel
Save