♦ 1) Collect application domain information
– focus on the functional requirements
– also consider other requirements and documents
♦ 2) Brainstorming
– listing important application domain concepts
– listing their properties/attributes
– listing their relationships to each other
♦ 3) Classifying the domain concepts into:
– classes
– attributes / attribute values
– relationships:association, inheritance, aggregation
♦ 4) Document result using UML class diagram
1)
基本需求:
用户可以在链上编写智能合约并提交链上达成共识;
用户可以调用智能合约,实现转账,投票等功能;
用户可以参与到账本的维护中。
其他需求:
用户编写智能合约时可以对历史数据进行溯源。
2)
首先从应用层来说,要有账户(account)的概念(借鉴以太坊和hyperledger),账户拥有地址(addrerss),每个地址唯一标识一个账户。用户(node)的账户作为普通账户,合约(contract)的账户作为合约账户,账户可以有余额(balance)等信息。
其次到存储层面,直接存储合约执行信息的是transaction,记账节点收集客户端节点提交的transaction后打包成block,通过共识算法接至链上并进行广播。
3)
总结上述内容,将概念内容转化为类内容:
类名:node
属性:account
关联:继承account;与block为has-a关系;与contract为association关系
类名:contract
属性:account
关联:继承account;与node为association关系
类名:account
属性:balance,address
关联:被node和contract继承
类名:block
属性:preBlkHash,timeStamp,merkleRoot,blkId
关联:与transaction为has-a关系;作为node的数据成员
类名:transaction
属性:srcAddress,desAddress,tranId
关联:作为block的数据成员