背景:部署三个节点(A/B/C)的区块链,对节点A上的数据库直接进行修改,将用户Ⅰ的balance和u_balance由1000增加修改成2000,另外两个节点(B、C)上面的数据保持不变,仍然是1000。
数据篡改之后的现象:用户Ⅰ登陆节点A的系统,查看余额为2000;而登陆节点(B/C)的系统,查看余额为1000。
交易操作:用户Ⅰ登陆节点A的系统,然后发起向用户Ⅱ转账1500的操作,转账交易成功,该笔交易进入节点A的待确认交易数据列表中,同时进行广播。此时,
交易数据的广播:节点(B/C)在收到交易数据的广播消息之后,对交易进行重新执行,发现用户Ⅰ的余额不足,故不接受该笔交易数据,无法进入待确认交易数据列表中。
创建新区块E之前的数据情况:在节点A上,用户Ⅰ的余额变为500(忽略手续费),用户Ⅱ的余额未变化;能查到此条待确认交易数据。在节点(B/C)上,用户Ⅰ和Ⅱ的余额未变化;待确认交易数据列表中无此条交易数据。
创建新区块E并上链:节点A上的受托人创建一个新区块E,该区块E包括了此条交易数据,并将此区块E在本地进行上链,同时广播给其他节点(B/C),其他节点收到该区块E之后,由于对该区块E中包含的交易数据在其他节点(B/C&#x