return "", nil

}

b, err := rlp.EncodeToBytes(signTx)

if err != nil {

return "", err

}

return hex.EncodeToString(b), nil

}

其中签名有两种算法

  • types.NewEIP155Signer(big.NewInt(chainId))
  • types.HomesteadSigner{}

第二种不需要提供 chainId 但是据说不稳定, types.NewEIP155Signer(big.NewInt(4) 4 是 rinkeby 测试网络,1是主网

私钥的获取 *ecdsa.PrivateKey

privateKeyByte, err := hexutil.Decode(privateKeyStr)

if err != nil {

return nil, err

}

privateKey, err := crypto.ToECDSA(privateKeyByte)

if err != nil {

return nil, err

}

return privateKey, nil

}

unlockedKey, err := keystore.DecryptKey(keystoreContent, password)

if err != nil {

return nil, err

}

return unlockedKey.PrivateKey, nil