arcula:一种安全的分层确定性钱包
arcula的Python项目详细描述
弓形
这个存储库包含了Arcula的概念证明实现,我们在MIT许可下发布的安全分层确定性钱包的设计
安装
Arcula需要Python3.7或更高版本
您可以从python包索引安装arcula,如下所示:
$ pip install --user arcula # use "arcula[dev]" to install the optional development dependencies $ python3 -c 'import arcula; print(arcula.__version__)'# Test the installation
用法
Arcula既可以用作命令行可执行文件,也可以用作库
命令行用法
待完成
库使用
首先,产生一个种子。在我们的示例中,我们使用实现BIP39的mnemonic package来生成种子
importmnemonicm=mnemonic.Mnemonic(language='english').generate()print(m)seed=mnemonic.Mnemonic.to_seed(m)
接下来,我们定义层次结构。
如果您想使用bip44标准,可以使用arcula.bip44
中定义的助手,例如:
fromarculaimportbip44WALLET_CONFIG={'BCH':(# (n. of public, private addresses)(1,2),(4,5),(0,1))}w=bip44.ArculaBIP44(seed,WALLET_CONFIG)
这将生成一个具有以下图像层次结构的钱包。
ArculaBIP44
类提供助手方法get_cold_storage_public_key()
和get_signing_key_certificate(path)
,它们分别返回由path
指定的节点(例如m/44'/BCH/1/xpub/3
)的冷库公钥和签名密钥以及授权证书。
请参阅下面的比特币现金示例了解详细用法。
否则,arcula.hierarchy.ArculaNode
类表示Arcula层次结构中的节点,并允许创建任何自定义层次结构。
每个节点都由数字id
和附加的tag
标识。
此外,它还保存对其他节点的引用列表edges
。
例如,您可以实例化自定义二进制层次结构,如下所示:
fromarcula.hierarchyimportArculaNoderoot=ArculaNode(id=0,tag='root')left=ArculaNode(id=1,tag='l')right=ArculaNode(id=1,tag='r')root.edges=[left,right]
接下来,运行密钥派生过程:
fromarculaimportarculawallet=arcula.Arcula(root)wallet.keygen()
ArculaNode
的实例在certificate
和_signing_key
属性中保存其签名密钥和授权证书。
certificate
是一对包含签名和已签名消息的签名。
例如:
left.certificate,left._signing_key
示例
比特币现金
文件utils/bch_test.py提供了一个如何使用arcula在比特币现金测试网络上发送和接收资金的示例。
在我们的示例中,我们将种子生成的随机性固定为correct horse battery staple
,然后生成具有以下结构的bip44兼容钱包:
以绿色突出显示的节点首先从testnet水龙头接收bch,然后通过以下事务返回它们:
- 337a67d36b8ecdd6bfbf2db654e54d71fcfd7a295cc97494e47272d305a6f444
- 10594853b5dc6d482fc1abf24b68afde04ba71bbf7c780db4c98381064ded302
文件
大部分的弧函数都有大量的文档记录。 我们的academical paper描述了我们的设计见解、arcula的形式化定义及其核心的确定性层次密钥分配密钥、与bip32的详细比较以及形式化的安全性证明。
作者
- 阿德里亚诺·迪卢西奥,罗马萨皮恩扎大学和史蒂文斯理工学院。
- 丹尼洛·弗朗卡蒂,史蒂文斯理工学院。
- Giuseppe Ateniese,史蒂文斯理工学院。