|
|
@ -1081,7 +1081,10 @@ func submitTransaction(ctx context.Context, b Backend, tx *types.Transaction) (c |
|
|
|
} |
|
|
|
} |
|
|
|
if tx.To() == nil { |
|
|
|
if tx.To() == nil { |
|
|
|
signer := types.MakeSigner(b.ChainConfig(), b.CurrentBlock().Number()) |
|
|
|
signer := types.MakeSigner(b.ChainConfig(), b.CurrentBlock().Number()) |
|
|
|
from, _ := types.Sender(signer, tx) |
|
|
|
from, err := types.Sender(signer, tx) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
return common.Hash{}, err |
|
|
|
|
|
|
|
} |
|
|
|
addr := crypto.CreateAddress(from, tx.Nonce()) |
|
|
|
addr := crypto.CreateAddress(from, tx.Nonce()) |
|
|
|
log.Info("Submitted contract creation", "fullhash", tx.Hash().Hex(), "contract", addr.Hex()) |
|
|
|
log.Info("Submitted contract creation", "fullhash", tx.Hash().Hex(), "contract", addr.Hex()) |
|
|
|
} else { |
|
|
|
} else { |
|
|
@ -1129,29 +1132,12 @@ func (s *PublicTransactionPoolAPI) SendTransaction(ctx context.Context, args Sen |
|
|
|
|
|
|
|
|
|
|
|
// SendRawTransaction will add the signed transaction to the transaction pool.
|
|
|
|
// SendRawTransaction will add the signed transaction to the transaction pool.
|
|
|
|
// The sender is responsible for signing the transaction and using the correct nonce.
|
|
|
|
// The sender is responsible for signing the transaction and using the correct nonce.
|
|
|
|
func (s *PublicTransactionPoolAPI) SendRawTransaction(ctx context.Context, encodedTx hexutil.Bytes) (string, error) { |
|
|
|
func (s *PublicTransactionPoolAPI) SendRawTransaction(ctx context.Context, encodedTx hexutil.Bytes) (common.Hash, error) { |
|
|
|
tx := new(types.Transaction) |
|
|
|
tx := new(types.Transaction) |
|
|
|
if err := rlp.DecodeBytes(encodedTx, tx); err != nil { |
|
|
|
if err := rlp.DecodeBytes(encodedTx, tx); err != nil { |
|
|
|
return "", err |
|
|
|
return common.Hash{}, err |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if err := s.b.SendTx(ctx, tx); err != nil { |
|
|
|
|
|
|
|
return "", err |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
signer := types.MakeSigner(s.b.ChainConfig(), s.b.CurrentBlock().Number()) |
|
|
|
|
|
|
|
if tx.To() == nil { |
|
|
|
|
|
|
|
from, err := types.Sender(signer, tx) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
return "", err |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
addr := crypto.CreateAddress(from, tx.Nonce()) |
|
|
|
|
|
|
|
log.Info("Submitted contract creation", "fullhash", tx.Hash().Hex(), "contract", addr.Hex()) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
log.Info("Submitted transaction", "fullhash", tx.Hash().Hex(), "recipient", tx.To()) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return submitTransaction(ctx, s.b, tx) |
|
|
|
return tx.Hash().Hex(), nil |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Sign calculates an ECDSA signature for:
|
|
|
|
// Sign calculates an ECDSA signature for:
|
|
|
|