我一直在为以太坊交易管理器编写签名者服务,我需要使用Google KMS Golang API签署以太坊交易。我将尝试在下面总结我面临的问题。
以太坊需要R || S || V格式的压缩RLP编码65字节ECDSA签名。另一方面,Google KMS的ECDSA签名具有额外的报头部分(R长度、S长度等)以及可变长度的R和S部分。这使得这些签名与以太坊交易签名不兼容。
解决这个问题的一种方法是从Google KMS获得的ecdsa签名中解析R和S字节,计算并将V字节添加到末尾,并使用此签名获得签名的以太坊交易。类似于这样:
var parsedSig struct{ R, S *big.Int }
_, err = asn1.Unmarshal(body, &parsedSig)
if err != nil {
logger.WithError(err).Error("failed to parse signature bytes")
return err
}
然而,由于以下一个或多个原因,这可能会失败:
// from go-ethereum
func rlpHash(x interface{}) (h common.Hash) {
hw := sha3.NewLegacyKeccak256()
rlp.Encode(hw, x)
hw.Sum(h[:0])
return h
}
我如何解决上述问题,以便能够使用Google KMS的非对称椭圆曲线签名算法创建可验证的签名以太坊交易?
您可以使用GCP签署以太坊交易(使用secp256k1)。不过,它需要对“v”值进行一些计算。这是一个包含完整过程的库:
https://pkg.go.dev/github.com/pascaldekloe/etherkeyms@v0.1.0/谷歌
使用SHA-256摘要进行以太坊交易是否有效?
我也有同样的疑问。据我所知,曲线计算不关心散列算法。也许谷歌使用分类只是为了尺寸?不管怎样,SHA-256在这里工作得很好。
https://github.com/pascaldekloe/etherkeyms/blob/096d712031548e601994c859637009eb53a08e34/google/google.go#L101
签署以太坊交易 要使脱机签名交易得到签署,需要设定一个RawTransaction类型。RawTransaction类似于前面提到的Transaction类型,但是它不需要通过具体的账号地址来请求,因为可以从签名中推断出来。 为了创建和签署原生交易,交易的顺序如下: 1.确定交易发起者帐户的下一个可用随机数nonce 2.创建RawTransaction对象 3.使用递归长度前缀编码(RLP即Re
以太坊(Ethereum)是一个支持智能合约的区块链平台,它与比特币最大的不同是,以太坊通过一个虚拟机(EVM)可以运行智能合约。 以太坊是Vitalik Buterin(维塔利克·布特林,人称V神)在2013年提出的概念,Vitalik最早参与了比特币社区的开发,并希望比特币把功能受限的脚本扩展成图灵完全的编程环境,但没有得到比特币开发社区的认同,于是他决定另起炉灶,打造一个新的区块链平台,目标
通过以太坊ethereum客户端进行认证签名交易 为了通过以太坊客户端进行交易,首先需要确保你正在使用的客户端知道你的钱包地址。最好是运行自己的以太坊客户端,比如geth/Parity,以便可以更方便的做到这一点。一旦你有一个客户端运行,你可以创建一个以太坊钱包,通过: geth Wiki包含了geth支持的良好运行的不同机制,例如导入私有密钥文件,并通过控制台创建新的以太坊帐户。 或者,你可以通
以太坊测试链 针对Ethereum以太坊有许多专用测试网络或者叫测试链,他们由各种客户端支持。 1.Rinkeby:只支持geth客户端。 2.Kovan:只支持Parity客户端。 3.Ropsten:支持geth和Parity客户端。 对于开发,建议你使用Rinkeby或KoVan测试链。这是因为他们使用的工作量证明POA共识机制,确保交易和块能够一致并及时的创建。Ropsten测试链,虽然最
Frontier是以太坊(Ethereum)网络第一个发布版, 当进入此未知领域,希望你可以测试和探索它。它有很多的危险,也会存在没有被发现的陷阱,也可能会有肆虐的海盗等待攻击你,但是也蕴含着很多的机会 什么是以太坊 和其他先进系统一样,以太坊对不同的人意味着不同的东西,在阅读本节时,有些地方不会引起你的共鸣或者让你感觉没有意思。没关系,直接跳到下一章节,希望可以给你更多启发。假如你读到本章节的末
我试图在windows上开发一个简单的去中心化应用程序,使用以太坊的教程-“DAPPS初学者”。它需要三款软件:Alethzers、Mist和Mix。我在不同的层面上有很多问题,因为很明显,他们停止了与Alethzerand Mix的合作。还有其他选择吗?有没有一个解决方案来开发一个好的Dapp,在那里我可以看到区块链最重要的部分?比如采矿和安全系统?