![logo](indy-logo.png)
* [Plenum Byzantine Fault Tolerant Protocol](#plenum-byzantine-fault-tolerant-protocol)
* [Technical Overview of Indy](#technical-overview-of-indy)
* [Other Documentation](#other-documentation)
* [Indy Plenum Repository Structure](#indy-plenum-repository-structure)
* [Dependencies](#dependencies)
* [Contact Us](#contact-us)
* [How to Contribute](#how-to-contribute)
* [How to Start Working with the Code](#how-to-start-working-with-the-code)
* [Try Plenum Locally](#try-plenum-locally)
## Plenum Byzantine Fault Tolerant Protocol
Plenum is the heart of the distributed ledger technology inside Hyperledger
Indy. As such, it provides features somewhat similar in scope to those
found in Fabric. However, it is special-purposed for use in an identity
system, whereas Fabric is general purpose.
## Technical Overview of Indy
Please find the general overview of the system in [Overview of the system](docs/main.md).
More documentation can be found in [docs](docs).
## Other Documentation
- Details about the protocol, including a great tutorial, can be found on the [wiki](https://github.com/hyperledger/indy-plenum/wiki).
- Please have a look at aggregated documentation at [indy-node-documentation](https://github.com/hyperledger/indy-node/blob/master/README.md) which describes workflows and setup scripts common for both projects.
## Indy Plenum Repository Structure
- plenum:
- the main codebase for plenum including Byzantine Fault Tolerant Protocol based on [RBFT](https://pakupaku.me/plaublin/rbft/5000a297.pdf)
- common:
- common and utility code
- crypto:
- basic crypto-related code (in particular, [indy-crypto](https://github.com/hyperledger/indy-crypto) wrappers)
- ledger:
- Provides a simple, python-based, immutable, ordered log of transactions
backed by a merkle tree.
- This is an efficient way to generate verifiable proofs of presence
and data consistency.
- The scope of concerns here is fairly narrow; it is not a full-blown
distributed ledger technology like Fabric, but simply the persistence
mechanism that Plenum needs.
- state:
- state storage using python 3 version of Ethereum's Patricia Trie
- stp:
- secure transport abstraction
- it has [ZeroMQ](http://zeromq.org/) implementations
- storage:
- key-value storage abstractions
- contains [leveldb](http://leveldb.org/) implementation as the main key-valued storage used in Plenum (for ledger, state, etc.)
## Dependencies
- Plenum makes extensive use of coroutines and the async/await keywords in
Python, and as such, requires Python version 3.5.0 or later.
- Plenum also depends on [libsodium](https://download.libsodium.org/doc/), an awesome crypto library. These need to be installed
separately.
- Plenum uses [ZeroMQ](http://zeromq.org/) as a secure transport
- [indy-crypto](https://github.com/hyperledger/indy-crypto)
- A shared crypto library
- It's based on [AMCL](https://github.com/milagro-crypto/amcl)
- In particular, it contains BLS multi-signature crypto needed for state proofs support in Indy.
## Contact Us
- Bugs, stories, and backlog for this codebase are managed in [Hyperledger's Jira](https://jira.hyperledger.org).
Use project name `INDY`.
- Join us on [Jira's Rocket.Chat](https://chat.hyperledger.org/channel/indy) at `#indy` and/or `#indy-node` channels to discuss.
## How to Contribute
- We'd love your help; see these [instructions on how to contribute](http://bit.ly/2ugd0bq).
- You may also want to read this info about [maintainers](https://github.com/hyperledger/indy-node/blob/stable/MAINTAINERS.md).
## How to Start Working with the Code
Please have a look at [Dev Setup](https://github.com/hyperledger/indy-node/blob/master/docs/setup-dev.md) in indy-node repo.
It contains common setup for both indy-plenum and indy-node.
## Try Plenum Locally
#### Install from pypi
```
pip install indy-plenum
```
From here, you can play with the command-line interface (see the [tutorial](https://github.com/hyperledger/indy-plenum/wiki)).
Note: For Windows, we recommended using either [cmder](http://cmder.net/) or [conemu](https://conemu.github.io/).
```
plenum
```
...or run the tests.
```
git clone https://github.com/hyperledger/indy-plenum.git
cd indy-plenum
python -m plenum.test
```
#### Initializing Keys
Each Node needs to have keys initialized
- ed25519 transport keys (used by ZMQ for Node-to-Node and Node-to-Client communication)
- BLS keys for BLS multi-signature and state proofs support
```
init_plenum_keys --name Alpha --seeds 000000000000000000000000000Alpha Alpha000000000000000000000000000 --force
```
```
init_plenum_keys --name Beta --seeds 0000000000000000000000000000Beta Beta0000000000000000000000000000 --force
```
```
init_plenum_keys --name Gamma --seeds 000000000000000000000000000Gamma Gamma000000000000000000000000000 --force
```
```
init_plenum_keys --name Delta --seeds 000000000000000000000000000Delta Delta000000000000000000000000000 --force
```
Note: Seed can be any randomly chosen 32 byte value. It does not have to be in the format `00..<name of the node>`.
#### Seeds used for generating clients
1. Seed used for steward Bob's signing key pair ```11111111111111111111111111111111```
2. Seed used for steward Bob's public private key pair ```33333333333333333333333333333333```
3. Seed used for client Alice's signing key pair ```22222222222222222222222222222222```
4. Seed used for client Alice's public private key pair ```44444444444444444444444444444444```
#### Running Node
```
start_plenum_node Alpha
```
#### Updating configuration
To update any configuration parameters, you need to update the `plenum_config.py` in `.plenum/YOUR_NETWORK_NAME` directory inside your home directory.
eg. To update the node registry to use `127.0.0.1` as host put these in your `plenum_config.py`.
```python
from collections import OrderedDict
nodeReg = OrderedDict([
('Alpha', (('127.0.0.1', 9701), '0490a246940fa636235c664b8e767f2a79e48899324c607d73241e11e558bbd7', 'ea95ae1c913b59b7470443d79a6578c1b0d6e1cad0471d10cee783dbf9fda655')),
('Beta', (('127.0.0.1', 9703), 'b628de8ac1198031bd1dba3ab38077690ca9a65aa18aec615865578af309b3fb', '18833482f6625d9bc788310fe390d44dd268427003f9fd91534e7c382501cd3c')),
('Gamma', (('127.0.0.1', 9705), '92d820f5eb394cfaa8d6e462f14708ddecbd4dbe0a388fbc7b5da1d85ce1c25a', 'b7e161743144814552e90dc3e1c11d37ee5a488f9b669de9b8617c4af69d566c')),
('Delta', (('127.0.0.1', 9707), '3af81a541097e3e042cacbe8761c0f9e54326049e1ceda38017c95c432312f6f', '8b112025d525c47e9df81a6de2966e1b4ee1ac239766e769f19d831175a04264'))
])
cliNodeReg = OrderedDict([
('AlphaC', (('127.0.0.1', 9702), '0490a246940fa636235c664b8e767f2a79e48899324c607d73241e11e558bbd7', 'ea95ae1c913b59b7470443d79a6578c1b0d6e1cad0471d10cee783dbf9fda655')),
('BetaC', (('127.0.0.1', 9704), 'b628de8ac1198031bd1dba3ab38077690ca9a65aa18aec615865578af309b3fb', '18833482f6625d9bc788310fe390d44dd268427003f9fd91534e7c382501cd3c')),
('GammaC', (('127.0.0.1', 9706), '92d820f5eb394cfaa8d6e462f14708ddecbd4dbe0a388fbc7b5da1d85ce1c25a', 'b7e161743144814552e90dc3e1c11d37ee5a488f9b669de9b8617c4af69d566c')),
('DeltaC', (('127.0.0.1', 9708), '3af81a541097e3e042cacbe8761c0f9e54326049e1ceda38017c95c432312f6f', '8b112025d525c47e9df81a6de2966e1b4ee1ac239766e769f19d831175a04264'))
])
```
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源分类:Python库 所属语言:Python 资源全名:indy-plenum-dev-1.2.297.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源推荐
资源详情
资源评论
收起资源包目录
Python库 | indy-plenum-dev-1.2.297.tar.gz (815个子文件)
setup.cfg 104B
domain_transactions_local_genesis 2KB
domain_transactions_sandbox_genesis 930B
export-gen-txns 820B
filter_log 3KB
gen_node 2KB
gen_steward_key 1KB
generate_plenum_pool_transactions 606B
get_keys 1KB
MANIFEST.in 25B
init_bls_keys 1001B
init_plenum_keys 3KB
log_stats 2KB
README.md 7KB
PKG-INFO 479B
PKG-INFO 479B
plenum 2KB
pool_transactions_local_genesis 1KB
pool_transactions_sandbox_genesis 1KB
node.py 119KB
replica.py 98KB
cli.py 80KB
ledger_manager.py 52KB
helper.py 42KB
test_node.py 38KB
conftest.py 36KB
client.py 36KB
zstack.py 34KB
pruning_trie.py 33KB
primary_elector.py 32KB
helper.py 28KB
monitor.py 28KB
merkle_test.py 25KB
view_changer.py 25KB
helper.py 25KB
test_bls_bft_replica.py 23KB
pool_manager.py 21KB
util.py 18KB
fields.py 18KB
test_primary_selector.py 17KB
nacl_wrappers.py 16KB
node_request_helper.py 15KB
wallet.py 15KB
test_performance.py 13KB
helper.py 13KB
test_bls_crypto_indy_crypto.py 13KB
test_nodes_with_pool_txns.py 13KB
test_network_setup.py 13KB
node_messages.py 13KB
test_same_ledger_initial_catchup.py 13KB
helper.py 13KB
test_ledger.py 12KB
stack_manager.py 12KB
utils.py 12KB
compact_merkle_tree.py 11KB
merkle_verifier.py 11KB
test_validator_info.py 11KB
propagator.py 11KB
looper.py 10KB
test_command_reg_ex.py 10KB
chunked_file_store.py 10KB
test_zstack.py 10KB
bls_bft_replica_plenum.py 10KB
ledger.py 9KB
test_merkle_proof.py 9KB
test_observer_policy_each_batch.py 9KB
client_authn.py 9KB
waits.py 9KB
script_helper.py 9KB
test_compact_serializer.py 9KB
test_proof.py 8KB
helper.py 8KB
pool_req_handler.py 8KB
test_belated_request_not_processed.py 8KB
delayers.py 8KB
test_node_connection.py 8KB
domain_req_handler.py 8KB
test_client.py 8KB
test_notifier_plugin_manager.py 8KB
test_pruning_state.py 8KB
test_testable.py 8KB
test_wallet_storage_helper.py 8KB
batched.py 7KB
malicious_behaviors_node.py 7KB
test_node_requests_missing_preprepare.py 7KB
message_handlers.py 7KB
helper.py 7KB
test_state_proof.py 7KB
config.py 7KB
test_status_command.py 7KB
helper.py 7KB
client_req_rep_store_file.py 7KB
test_node_request.py 7KB
command.py 7KB
test_view_change_timeout.py 6KB
test_client_retry.py 6KB
eventually.py 6KB
test_multi_signature.py 6KB
test_6th_node_join_after_view_change_by_primary_restart.py 6KB
test_config_util.py 6KB
共 815 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
挣扎的蓝藻
- 粉丝: 14w+
- 资源: 15万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功