一:钱包-Wallet
1:公钥 用于签署不想被串改的数据
2:私钥 用于验证签名
3:UTXOs 当前钱包可以用的钱
描述:当用户有自己的钱包,就会生成该钱包的 公钥,和私钥。
二:区域块 block
1:hash (当前去区块的标识):
2:previousHash(上一个区块的标识)
3:<Transaction> transactions 交易记录
每次交易,都会生成该交易的区域块,并且记录上次交易所在区域块的地址
三:交易记录-Transaction
每次交易都会生成一次交易记录,并且会把交易记录放在区域块区域
1:transactionId(交易的id)
2:tsender(付账的的公钥)
3:treciepient(收钱的的公钥)
4:tvalue(交易金额)
5:tsignature(签名)
6:t<TransactionInput> inputs
7:t<TransactionOutput> outputs(当前交易的记录)
四:UTXOS 记录不同钱包可以用钱
五:ArrayList<Block> 记录所有的区域块
列子:
1:钱币工厂向钱包a转账 100.
1.1通过工厂公钥,钱包a的公钥,转账的金额,工厂的私钥,生成一个签名
1.2会生成一个交易记录,该次交易记录,记录信息,工厂公钥,钱包a公钥,工厂私钥,转账金额,签名。以及交易内部信息(其实记录了钱包可以用的钱,如果是第一次交易,记录里的上一次的交易id则是0)
1.3把钱包a可以用的钱,放到UTXOS(该记录了所有钱包可以用的钱的记录)
1.4同时会生成一个区域块,跨区块记录了该次交易,以及上次交易生成区域块的id,如果是第一次交易,那么上次区域块的地址是0.
1.5最后把该区域块放到区域块集合内。
2如果钱包a想钱包b转钱40
1.1通过钱包a公钥,钱包b的公钥,转账的金额,钱包a的私钥,生成一个签名
1.2会生成一个交易记录,该次交易记录,记录信息,钱包a公钥,钱包b公钥,钱包a私钥,转账金额,签名。以及交易内部信息(其实记录了钱包可以用的钱,上一次的交易id则工厂向钱包a交易记录的id)
1.3把钱包b可以用的钱,放到UTXOS(该记录了所有钱包可以用的钱的记录),同时把钱包a的可用钱取出来 减去转给钱包b的钱,生成一个新的交易记录存到UTXOS,然后把之前的移除掉。现在UTXOS只有两条,一个钱包a的60,一个钱包b的40。
同时会把之前钱包a得钱 之前的移除掉,在生成一个新的 60记录
1.4同时会生成一个区域块,跨区块记录了该次交易,以及上次交易生成区域块的id,那么上次区域块的地址是工厂转钱包a的区域块的地址
1.5最后把该区域块放到区域块集合内。