Arcula:一个安全分层确定性钱包
项目描述
Arcula
这个存储库包含了一个Arcula的证明概念实现,我们的设计是安全分层确定性钱包,在MIT许可下发布。
安装
Arcula需要Python 3.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可以用作命令行可执行文件或作为库。
命令行使用
待完成。
库使用
首先,生成一个种子。在我们的示例中,我们使用mnemonic包,该包实现了BIP39来生成种子。
import mnemonic
m = mnemonic.Mnemonic(language='english').generate()
print(m)
seed = mnemonic.Mnemonic.to_seed(m)
接下来,我们定义您层次结构的结构。如果您想使用BIP44标准,您可以使用我们在arcula.bip44
中定义的帮助程序,例如:
from arcula import bip44
WALLET_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`。
例如,您可以按如下方式实例化一个自定义二叉层次结构:
from arcula.hierarchy import ArculaNode
root = ArculaNode(id=0, tag='root')
left = ArculaNode(id=1, tag='l')
right = ArculaNode(id=1, tag='r')
root.edges = [left, right]
接下来,运行密钥派生过程
from arcula import arcula
wallet = 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兼容的钱包,其结构如下:
绿色高亮的节点首先从测试网的水龙头收到了BCH,然后通过以下交易将它们返还
- 337a67d36b8ecdd6bfbf2db654e54d71fcfd7a295cc97494e47272d305a6f444
- 10594853b5dc6d482fc1abf24b68afde04ba71bbf7c780db4c98381064ded302
文档
大多数Arcula函数都有详细的文档。我们的学术论文描述了我们的设计理念,Arcula及其核心的确定性分层密钥分配的正式定义,与BIP32的详细比较以及形式化安全证明。
作者
- Adriano Di Luzio,罗马萨皮恩扎大学和斯图文斯理工学院。
- Danilo Francati,斯图文斯理工学院。
- Giuseppe Ateniese,斯图文斯理工学院。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
arcula-1.0.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 39e1dbc311433a139cc16f4bb7bc45b98699dca352b85582714727805482ff83 |
|
MD5 | d2cb3078b534ef8b703547c5cbfa7f09 |
|
BLAKE2b-256 | dc6471d3bc40c57a29e0d1af95b03570ae8b7fd0dcae0c4095a5bdc6f4543376 |
arcula-1.0.2-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c28b1b0bfe97edb081aeb1c625f19a000b6108971afe25b74daa9c69dc83cd57 |
|
MD5 | 2eac9b07308a7f3e5efc40b15ea3cc0e |
|
BLAKE2b-256 | 0669610cd403f4152f768560bfe7245e89b82bdd3ffb196c625be4dc42c7b8bf |