在TREZOR硬件钱包应用IOTA交易

应用 tigermumu 2周前 (11-05) 371次浏览 1个评论

在TREZORS上的IOTA离线钱包

大约3个月前,我首次听说IOTA之后就非常喜欢它。只是,它的发展现状目前仍然处于非常早期的阶段,仍有许多需要改进的地方。其中之一,就是离线钱包。

在4个月前,我和我兄弟做了自己的TREZORS,我们发现TREZORS的硬件与软件都是开源的,这说明每个人都可以使用很低的成本,采购一些电路板和其他部件,来搭建自己的TREZORS。而且,TREZORS是围绕STM32搭建的,我在自己的网站多次介绍过这事。对于改造它,似乎并不是非常困难。

 

硬  件

在Github上有TREZOR的开源电路图,只是图中有个问题,R6电阻不应该放置于那里。起先,我们按照原始电路图来搭建,结果在搜寻USB时遇到很多的问题,尤其在Windows上。正确的电路板布局图可为用ST-Link的程序提供突破口。

Trezor 复制ST-Link的程序

 

引导程序

对于开发这个电路板,我的确想将引导程序做的更灵活一些。默认情况下,TREZOR的引导程序在写保护开启时,不能被擦除。但我打算禁用这个设置。另外,我还想跳过检查固件签名的步骤。

 

24个助记词生成IOTA种子

默认情况下,TREZOR采用24个助记词来确认各种加密货币生成的地址。根据BIP-0039标准,TREZOR内部生成一个64字节长的“种子”。IOTA种子由81位trytes(三进制字符)组成。Kerl精确实现在81位trytes和48位字节之间的确定性转换。但是48位字节不是64位字节,而是64位字节的3 / 4。所以,我采用一个简单的算法,它将64位字节从助记符排入(4,48)字节的数组中,然后这些数组被kerl吸收,最后,再排出准确的种子。

 

在TREZOR上应用IOTA的功能

目前,我只实现了用trezorctl处理函数调用(implemented function calls using trezorctl),它是一个python脚本。目前的基本职能是:

  • trezorctl iota_get_address [-i <seed_index>]
  • trezorctl iota_show_seed
  • trezorctl iota_sign_transaction -a <receiving_address> -b <balance> -v <transfer_value>

 

地址生成器和交易签署

生成公开地址可能是最慢的。每个地址大约需要12秒来生成。因此,一旦生成了公开地址,它就存储在TREZORS的闪存中。

目前,交易签署是非常基本的。它做出如下设定:

  • 当前地址存有价值。
  • 下一个地址是剩余地址。
  • 安全级别总是2。
  • 该交易包总是由4个交易组成,其中第一个交易将价值发送到接收地址。

TREZOR将响应IOTA签署交易的交易包哈希(可用于验证)和两个签名。

在TREZOR硬件上生成IOTA地址

 

将交易链接到缠结

这部分仍需要更妥善的处理。为了验证此概念,我基本上完全使用JavaScript库手动创建了交易。我手动创建了这样的交易包:

  • bundle.addEntry(1, to_addr, 10, tag, timestamp)
  • bundle.addEntry(1, from_addr, -16000000, tag, timestamp)
  • bundle.addEntry(1, from_addr, 0, tag, timestamp)
  • bundle.addEntry(1, remainder_addr, 15999990, tag, timestamp)
  • bundle.finalize() bundle.addTrytes([])

然后,我用从TREZOR接收的签名重写了签名/消息字段。用api.sendTrytes()来连接缠结。在TREZOR上没有完成工作量证明。种子永远不会从TREZOR丢失!在thetangle.org上,我们可以找到第一个TREZOR签名的交易。

感谢荷兰IOTA首次见面会的组织者为我提供的TREZOR项目初始资金。

 

最 后

目前,我还没有与TREZOR开发团队建立任何联系。假如有官方的力量介入,也许能为此项目构建更成熟的固件版本。但在此之前,我已经发布了一些二进制文件,可以在官方的TREZOR上显示。只不过,你必须处理“非官方固件检测”的警告。

除了python命令行接口之外,我还没有开始使用计算机端程序。如果能在未来的IOTA钱包中实现这个功能,那就非常完美了。然而,我并不非常了解Javascript,所以我很感激帮助过我的朋友。.

如果可以实现源代码的触发检查那就更好了。我试图通过测试驱动开发的方法来防止核心协议中出现bug,但是我还不能保证您的IOTAs在我设计的TREZOR上是100%安全的。

请注意,我利用业余时间将所有项目开发作为爱好。所以,不要问我什么时候准备好了或者什么时候会正式发布。如果您是一个程序员,并且您真的想拥有这个,请随意浏览github上的源代码(source code on github )并为您自己编译。否则,请保持耐心,静静的期待。

 

原文链接:https://www.bartslinger.com/iota/iota-transactions-with-trezor-hardware/


IOTACHINA遵守BY-NC-SA协议 , 翻译文章仅供参考,建议用户参考原文为准!
喜欢 (6)
tigermumu
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. https://www.youtube.com/watch?v=MEK0enmJyuY Прикол рекламы казино AZINO777 ПОДПИШИСЬ!!!
    jop2017-11-09 23:14 回复