added eth.resend
This commit is contained in:
		
							parent
							
								
									f1a4a6e563
								
							
						
					
					
						commit
						dc58568a25
					
				| @ -6,6 +6,7 @@ import ( | ||||
| 	"math/big" | ||||
| 
 | ||||
| 	"github.com/ethereum/go-ethereum/common" | ||||
| 	"github.com/ethereum/go-ethereum/core/types" | ||||
| 	"github.com/ethereum/go-ethereum/eth" | ||||
| 	"github.com/ethereum/go-ethereum/rpc/codec" | ||||
| 	"github.com/ethereum/go-ethereum/rpc/shared" | ||||
| @ -74,6 +75,7 @@ var ( | ||||
| 		"eth_hashrate":                            (*ethApi).Hashrate, | ||||
| 		"eth_getWork":                             (*ethApi).GetWork, | ||||
| 		"eth_submitWork":                          (*ethApi).SubmitWork, | ||||
| 		"eth_resend":                              (*ethApi).Resend, | ||||
| 		"eth_pendingTransactions":                 (*ethApi).PendingTransactions, | ||||
| 	} | ||||
| ) | ||||
| @ -561,6 +563,22 @@ func (self *ethApi) SubmitWork(req *shared.Request) (interface{}, error) { | ||||
| 	return self.xeth.RemoteMining().SubmitWork(args.Nonce, common.HexToHash(args.Digest), common.HexToHash(args.Header)), nil | ||||
| } | ||||
| 
 | ||||
| func (self *ethApi) Resend(req *shared.Request) (interface{}, error) { | ||||
| 	args := new(ResendArgs) | ||||
| 	if err := self.codec.Decode(req.Params, &args); err != nil { | ||||
| 		return nil, shared.NewDecodeParamError(err.Error()) | ||||
| 	} | ||||
| 
 | ||||
| 	ret, err := self.xeth.Transact(args.Tx.From, args.Tx.To, args.Tx.Nonce, args.Tx.Value, args.GasLimit, args.GasPrice, args.Tx.Data) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	self.ethereum.TxPool().RemoveTransactions(types.Transactions{args.Tx.tx}) | ||||
| 
 | ||||
| 	return ret, nil | ||||
| } | ||||
| 
 | ||||
| func (self *ethApi) PendingTransactions(req *shared.Request) (interface{}, error) { | ||||
| 	txs := self.ethereum.TxPool().GetTransactions() | ||||
| 
 | ||||
|  | ||||
| @ -892,3 +892,53 @@ func newTx(t *types.Transaction) *tx { | ||||
| 		GasPrice: t.GasPrice().String(), | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| type ResendArgs struct { | ||||
| 	Tx       *tx | ||||
| 	GasPrice string | ||||
| 	GasLimit string | ||||
| } | ||||
| 
 | ||||
| func (args *ResendArgs) UnmarshalJSON(b []byte) (err error) { | ||||
| 	var obj []interface{} | ||||
| 	if err = json.Unmarshal(b, &obj); err != nil { | ||||
| 		return shared.NewDecodeParamError(err.Error()) | ||||
| 	} | ||||
| 
 | ||||
| 	if len(obj) < 1 { | ||||
| 		return shared.NewInsufficientParamsError(len(obj), 1) | ||||
| 	} | ||||
| 
 | ||||
| 	data, err := json.Marshal(obj[0]) | ||||
| 	if err != nil { | ||||
| 		return shared.NewDecodeParamError("Unable to parse transaction object") | ||||
| 	} | ||||
| 
 | ||||
| 	trans := new(tx) | ||||
| 	err = json.Unmarshal(data, trans) | ||||
| 	if err != nil { | ||||
| 		return shared.NewDecodeParamError("Unable to parse transaction object.") | ||||
| 	} | ||||
| 
 | ||||
| 	gasLimit, gasPrice := trans.GasLimit, trans.GasPrice | ||||
| 
 | ||||
| 	if len(obj) > 1 && obj[1] != nil { | ||||
| 		if gp, ok := obj[1].(string); ok { | ||||
| 			gasPrice = gp | ||||
| 		} else { | ||||
| 			return shared.NewInvalidTypeError("gasPrice", "not a string") | ||||
| 		} | ||||
| 	} | ||||
| 	if len(obj) > 2 && obj[2] != nil { | ||||
| 		if gl, ok := obj[2].(string); ok { | ||||
| 			gasLimit = gl | ||||
| 		} else { | ||||
| 			return shared.NewInvalidTypeError("gasLimit", "not a string") | ||||
| 		} | ||||
| 	} | ||||
| 	args.Tx = trans | ||||
| 	args.GasPrice = gasPrice | ||||
| 	args.GasLimit = gasLimit | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| @ -14,6 +14,13 @@ web3._extend({ | ||||
| 			params: 2, | ||||
| 			inputFormatter: [web3._extend.formatters.formatInputString,web3._extend.formatters.formatInputString], | ||||
| 			outputFormatter: web3._extend.formatters.formatOutputString | ||||
| 		}), | ||||
| 		new web3._extend.Method({ | ||||
| 			name: 'resend', | ||||
| 			call: 'eth_resend', | ||||
| 			params: 3, | ||||
| 			inputFormatter: [function(obj) { return obj; },web3._extend.formatters.formatInputString,web3._extend.formatters.formatInputString], | ||||
| 			outputFormatter: web3._extend.formatters.formatOutputString | ||||
| 		}) | ||||
| 	], | ||||
| 	properties: | ||||
|  | ||||
| @ -85,6 +85,7 @@ var ( | ||||
| 			"getWork", | ||||
| 			"submitWork", | ||||
| 			"pendingTransactions", | ||||
| 			"resend", | ||||
| 		}, | ||||
| 		"miner": []string{ | ||||
| 			"hashrate", | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user