code: func (s *PublicTransactionPoolAPI) SignTransaction(ctx context.Context, args SendTxArgs) (*SignTransactionResult, error) {
  	if args.Gas == nil {
  		return nil, fmt.Errorf("gas not specified")
  	}
  	if args.GasPrice == nil {
  		return nil, fmt.Errorf("gasPrice not specified")
  	}
  	if args.Nonce == nil {
  		return nil, fmt.Errorf("nonce not specified")
  	}
  	if err := args.setDefaults(ctx, s.b); err != nil {
  		return nil, err
  	}
  	tx, err := s.sign(args.From, args.toTransaction())
  	if err != nil {
  		return nil, err
  	}
  	data, err := rlp.EncodeToBytes(tx)
  	if err != nil {
  		return nil, err
  	}
  	return &SignTransactionResult{data, tx}, nil
  }
docs: // SignTransaction will sign the given transaction with the from account.
  // The node needs to have the private key of the account corresponding with
  // the given from address and it needs to be unlocked.