![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 `indy_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 `indy_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.6.585.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源推荐
资源详情
资源评论
收起资源包目录
Python库 | indy-plenum-dev-1.6.585.tar.gz (1009个子文件)
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 596B
PKG-INFO 596B
plenum 2KB
pool_transactions_local_genesis 1KB
pool_transactions_sandbox_genesis 1KB
process_logs 33KB
node.py 156KB
replica.py 112KB
cli.py 80KB
ledger_manager.py 51KB
conftest.py 40KB
test_node.py 39KB
pruning_trie.py 38KB
helper.py 38KB
zstack.py 37KB
client.py 37KB
primary_elector.py 32KB
monitor.py 31KB
view_changer.py 31KB
validator_info_tool.py 27KB
merkle_test.py 26KB
test_bls_bft_replica.py 24KB
helper.py 23KB
helper.py 22KB
fields.py 20KB
util.py 18KB
test_instance_faulty_processor.py 18KB
pool_manager.py 17KB
test_primary_selector.py 17KB
test_revival_spike_resistant_ema_throughput_measurement.py 17KB
nacl_wrappers.py 16KB
test_proof.py 15KB
metrics_collector.py 15KB
node_request_helper.py 15KB
wallet.py 15KB
node_messages.py 14KB
test_network_setup.py 14KB
test_bls_crypto_indy_crypto.py 14KB
helper.py 14KB
test_same_ledger_initial_catchup.py 13KB
stack_manager.py 12KB
test_ledger.py 12KB
helper.py 12KB
test_throughput_based_master_degradation_detection.py 12KB
config.py 12KB
test_performance.py 12KB
test_zstack.py 11KB
propagator.py 11KB
compact_merkle_tree.py 11KB
merkle_verifier.py 11KB
test_validator_info.py 11KB
helper.py 11KB
test_notifier_plugin_manager.py 11KB
looper.py 11KB
bls_bft_replica_plenum.py 11KB
test_command_reg_ex.py 10KB
chunked_file_store.py 10KB
pool_req_handler.py 10KB
test_valid_message_request.py 10KB
ledger.py 10KB
test_observer_policy_each_batch.py 9KB
client_authn.py 9KB
txn_util.py 9KB
utils.py 9KB
test_merkle_proof.py 9KB
test_backup_replica_resumes_ordering_on_lag_in_checkpoints.py 9KB
test_pruning_state.py 9KB
replicas.py 9KB
stacks.py 9KB
helper.py 9KB
domain_req_handler.py 9KB
malicious_behaviors_node.py 9KB
message_handlers.py 9KB
test_process_catchup_replies.py 9KB
replayer.py 9KB
waits.py 9KB
test_compact_serializer.py 9KB
test_vc_start_msg_strategy.py 8KB
delayers.py 8KB
helper.py 8KB
test_belated_request_not_processed.py 8KB
batched.py 8KB
test_config_ledger.py 8KB
test_testable.py 8KB
test_wallet_storage_helper.py 8KB
test_node_catchup_with_connection_problem.py 8KB
共 1009 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11
资源评论
挣扎的蓝藻
- 粉丝: 14w+
- 资源: 15万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功