# Ds设计文档 ## 一、需求分析 用户故事A:Alice和Bob是Ds项目的使用者,他们在生活中是关系亲密的商业伙伴,经常在通讯软件中讨论合作。他们不希望商讨的信息被其他人知道,包括通讯软件的服务商。于是他们觉得使用Ds来项目通讯。 Alice和Bob首先从Github上下载了ds-node和ds-js两个项目的执行文件,然后首先在电脑上运行ds-node项目对应的软件,启动好节点。然后运行ds-js项目,此时会在浏览器中打开网页,网页显示了节点的同步 情况与相关功能界面。此时他们可以通过网页的用户界面来创建自己的账户,获得自己的公私钥匙。然后他们可以通过其他网络来交换公钥信息。当节点同步完成后,他们就可以相互发送消息了。 1. Alice首先在界面上打开一个通讯窗口,在发送方上填写她得到的Bob的公钥,然后填上要发送的消息,如"Hello, Bob",最后点击发送按钮 2. 当Alice点击发送按钮后,程序会自动用Bob的公钥来加密发送的消息,然后将加密后的数据和其他信息组成一笔交易,并将这笔交易发送给本地的ds-node程序。 3. ds-node程序受到交易后会对交易的有效性进行检测,如果通过将交易放入交易池中,等待交易被放入下一个区块,同时将交易向全网传播。 4. 交易确认进入区块链后,会在产生关于Bob的消息Event事件,Alice和Bob的node-ds程序都会监控这样的消息,这样就知道消息是否顺利传播到网络中了。 5. Bob通过event消息事件发现有消息发送给自己后,将数据获取到,然后利用自己的私钥将其解密,获取到信息 6. Bob可以选择是否回复Alice,如果回复Alice则和Alice一样将消息发送到网络中。 需求点: 1. 用户可以利用公私钥来作为自己的账户。 2. 利用接受方的公钥加密信息,接收方利用自己的私钥解密数据获取到信息 3. 节点后台监控事件发生,获取到与自己相关的消息。 4. 节点后台定时检测链上的历史数据,确保自己没有遗漏消息。 ## 二、软件设计 ### 1. 总体架构 [总体架构图](https://www.processon.com/view/link/5d512df4e4b0ac2b6175c51a) ### 2. 用户界面 初步设想类似于网页微信的结构 ### 3. 数据类型定义 ```rust struct Message { reciver string info string } ``` ## 三、软件编程 github 仓库: [ds-node](https://github.com/demisstif/ds-node) [ds-js](https://github.com/demisstif/ds-js) ## 四、软件测试
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up