当前位置:首页 > 物联网 > 区块链
[导读] 我正在发布我的“hacky”golang测试环境,该环境深入链接到go-ethereum代码库。 测试智能合约的一个重要部分是能够生成和使用任意数量的密钥/地址来签署/发送/接收交易。理

我正在发布我的“hacky”golang测试环境,该环境深入链接到go-ethereum代码库。

测试智能合约的一个重要部分是能够生成和使用任意数量的密钥/地址来签署/发送/接收交易。理想情况下,我们不应该使用实时密钥对,因此我创建了可以在https://github.com/DaveAppleton/memorykeys找到的内存密钥。

geth crypto模块的大部分工作是包装go crypto/ecdsa库。ECDSA代表椭圆曲线数字签名算法。GETH的加密库的工作是选择正确的参数来输入go的ecdsa库。例如,创建一个密钥只需调用GETH / crypto的GenerateKey函数,然后只选择go的crypto / ecdsa模块的参数。 geth的实现方式如下:

func GenerateKey() (*ecdsa.PrivateKey, error) {

return ecdsa.GenerateKey(S256(), rand.Reader)

}

s256()是一个返回用于加密的椭圆曲线的函数,另一个参数是提供一个好的随机数生成器,以确保您的私钥不可猜测。有趣的是,geth链接到曲线的两个不同版本,一个版本使用与机器相关的调用来提高性能,另一个版本则完全用go编写以实现可移植性。

ECDSA模块向我们返回公钥,但大多数时候我们希望以太坊地址不是公钥。Geth的加密库再次为我们实现了这一点。

func PubkeyToAddress(p ecdsa.PublicKey) common.Address {

pubBytes := FromECDSAPub(&p)

return common.BytesToAddress(Keccak256(pubBytes[1:])[12:])

}

其中,FromECDSAPUB()提取公钥。

你会发现慢慢探索Geth的密码库可以让非密码学家(像我一样)对正在发生的事情有一点了解,而不会让你的大脑超载。

库的目标

这个库旨在帮助我们在特定的基础上生成和使用密钥,而不将它们存储起来以便在以后的运行中重用。

我们通过名字引用这些密钥并获得:

1. 私钥(用于签名)

2. 封装该密钥的事务对象,以供将来与ABIGEN一起使用

3. 地址

限制

由于不需要同时创建密钥,因此密钥存储在对并发写入不安全的映射中。

函数

getprivatekey(keyname)在第一次调用时创建与名称关联的密钥对,后续调用返回上一个值。

launcher,err := memorykeys.GetPrivateKey(“launcher”)

getaddress(keyname string)获取与键关联的地址。如果密钥不存在,则创建该密钥

recipient,err := GetAddress(“recipient”)

GetTransactor(keyName string)获取一个用于ABIGEN对象的事务对象。 必要时创建密钥。

deployer, err := GetTransactor(“deployer”)

importprivatekey(keyname,hex key)导入十六进制编码的私钥以供使用。小心不要使用生产密钥

privateKey := “d31a46c5322e8e8a7e11f51cf9c4073fea42d33b431b5e7e76a82518fc178ea8”

key, err := ImportPrivateKey(“imported”, privateKey)

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上海2024年4月17日 /美通社/ -- 近日,国际公认的测试、检验和认证机构SGS为歌尔股份有限公司(以下简称"歌尔")颁发QTL认可实验室证书,彰显了歌尔在产品佩戴体验舒适度检测及声学检测领域的...

关键字: 声学 测试 ISO 检测技术

德国殷格翰2024年4月16日 /美通社/ -- 今天,研发驱动的全球领先生物制药企业勃林格殷格翰发布了2023年全年业绩表现。公司加速夯实研发管线,重点研发领域的多项关键性临床试验顺利按计划推进。全年研发投入同比增长1...

关键字: 管线 可持续发展 GE TI

HBM高带宽存储芯片被广泛应用于最先进的人工智能(AI)芯片,据业界消息,英伟达的质量测试对存储厂商提出挑战,因为相比传统DRAM产品,HBM的良率明显较低。

关键字: HBM 良率 存储 英伟达 测试

在嵌入式系统设计中,搭建开发环境是实现项目成功的重要步骤之一。本文将介绍如何在嵌入式系统中构建一个完整的开发环境,包括硬件和软件方面的考虑。 在嵌入式系统设计中,搭建一个良好的开发环境是非常重要的,它能够帮助开发人员高效...

关键字: 嵌入式 开发环境 测试

北京2023年9月23日 /美通社/ -- 近日,主线科技正式获准在北京市智能网联汽车政策先行区道路开启常态化测试与示范,将与物流客户在真实开放的城区道路场景中,率先开启基于L4级别自动驾驶能力的智能卡车运输示范。 随...

关键字: 智能卡 测试 高速公路 BSP

北京2023年9月21日 /美通社/ -- 随着生成式AI快速发展,人工智能在各行各业广泛应用,AI算力需求剧增,AI芯片多元化趋势凸显,带来了芯片开发成本高、多元芯片使用难等挑战。近日,浪潮信息面向全行业公布了《开放加...

关键字: 生成式AI AI芯片 加速卡 测试

重庆2023年9月20日 /美通社/ -- 近日,国际独立第三方检测、检验和认证机构德国莱茵TÜV大中华区(以下简称"TÜV莱茵")亮...

关键字: 摩托 测试 动力电池 CE

国轩德国基地首款电池产品正式下线 下萨克森州州长斯蒂凡·魏尔等中德政府官员共同见证 同期与巴斯夫中国、ABB、Ebusco、Ficosa等多家国际知名企业签约 德国哥廷根2023年9月1...

关键字: 电池 国轩高科 GE AN

(全球TMT2023年9月15日讯)企业移动性管理领域企业42Gears宣布推出AstroStatus,这是一种直观的事件沟通解决方案,旨在增强企业能力,让企业在云托管解决方案出现服务中断和意外故障时能随时向客户通报情...

关键字: STATUS RS OS GE

(全球TMT2023年9月14日讯)近日,国际公认的测试、检验和认证机构SGS为武汉芯必达微电子有限公司LDO产品颁发AEC-Q100认证证书。AEC-Q100认证的产品范围包括了各种类型的集成电路,如模拟、数字、混合...

关键字: LDO AEC-Q100 测试 模拟
关闭
关闭