浏览代码

internal/ethapi: add status code to receipt rpc return

rjl493456442 8 年之前
父节点
当前提交
a31835c8b4
共有 1 个文件被更改,包括 14 次插入3 次删除
  1. 14 3
      internal/ethapi/api.go

+ 14 - 3
internal/ethapi/api.go

@@ -44,8 +44,10 @@ import (
 )
 
 const (
-	defaultGas      = 90000
-	defaultGasPrice = 50 * params.Shannon
+	defaultGas              = 90000
+	defaultGasPrice         = 50 * params.Shannon
+	receiptStatusSuccessful = 1
+	receiptStatusFailed     = 0
 )
 
 // PublicEthereumAPI provides an API to access Ethereum related information.
@@ -991,7 +993,6 @@ func (s *PublicTransactionPoolAPI) GetTransactionReceipt(hash common.Hash) (map[
 	from, _ := types.Sender(signer, tx)
 
 	fields := map[string]interface{}{
-		"root":              hexutil.Bytes(receipt.PostState),
 		"blockHash":         blockHash,
 		"blockNumber":       hexutil.Uint64(blockNumber),
 		"transactionHash":   hash,
@@ -1004,6 +1005,16 @@ func (s *PublicTransactionPoolAPI) GetTransactionReceipt(hash common.Hash) (map[
 		"logs":              receipt.Logs,
 		"logsBloom":         receipt.Bloom,
 	}
+
+	// Assign receipt status or post state.
+	if len(receipt.PostState) > 0 {
+		fields["root"] = hexutil.Bytes(receipt.PostState)
+	} else {
+		fields["status"] = hexutil.Uint(receiptStatusSuccessful)
+		if receipt.Failed {
+			fields["status"] = hexutil.Uint(receiptStatusFailed)
+		}
+	}
 	if receipt.Logs == nil {
 		fields["logs"] = [][]*types.Log{}
 	}