#tdn #permissioned #distributed #permissionless #blockchain

nightly tdn_permission

TDN 的多个权限/无权限库

1 个不稳定版本

0.2.0 2020 年 9 月 16 日

#2#permissionless

MIT/Apache

21KB
222

TDN-权限

TDN 的多个权限/无权限库。

使用简单

use tdn::prelude::start;
use tdn_permission::PermissionlessGroup;
use tdn_types::message::{GroupReceiveMessage, ReceiveMessage};

fn main() {
    smol::block_on(async {
        let mut group = PermissionlessGroup::default();
        let (_peer_addr, send, recv) = start().await.unwrap();

        while let Ok(message) = recv.recv().await {
            match message {
                ReceiveMessage::Group(GroupReceiveMessage::PeerJoin(peer, addr, data)) => {
                    group.join(peer, addr, data, send.clone()).await;
                }
                ReceiveMessage::Group(GroupReceiveMessage::PeerJoinResult(peer, is_ok, result)) => {
                    group.join_result(peer, is_ok, result);
                }
                ReceiveMessage::Group(GroupReceiveMessage::PeerLeave(peer)) => {
                    group.leave(&peer);
                }
                _ => {
                    println!("recv: {:?}", message);
                }
            }
        }
    });
}

测试示例

  • 测试公共: cargo run --example permissionless

  • 测试 CA 权限: cargo run --example ca_permissioned

  • 测试投票权限: cargo run --example vote_permissioned

特性

  • 无权限(公共)
  • CA 权限(可信 CA)
  • 投票权限(投票)

许可证

该项目可根据您的选择使用以下任一许可证:

依赖项

~2.5–3.5MB
~58K SLoC