我再具体解释一下
1. BTS中每个帐号(account)公开的信息是帐号的注册名及其对应的公钥地址。
2. 张三的帐号地址为 ZP0,对应私钥 ZS0。李四帐号地址 LP0,对应私钥 LS0。
3. 张三现在要给李四发送BTS,张三首先随机生成一对一次性公钥TP0/私钥TS0。
李四的公钥 + 一次性私钥生成一个公钥,作为本次交易的接受地址:LP0+TS0 -> LP1
张三是把BTS转入了这个新生成地地址中。同时把一次性公钥(TP0)以公开的信息放在交易数据中。
4. 李四怎么知道这个LP1地址是给自己的呢?他会用自己的私钥对每一个收到的交易做验证。
李四的私钥+一次性公钥能得到这个地址对应的私钥: LS0 + TP0 -> LS1
(注意这个私钥LS1只有李四能算出来,张三是算不出来的。)
这样李四的帐号中除了 LP0/LS0,每接受一次转账,就会自动增加一对密钥 LP1/LS1, LP2/LS2 ....
(注意这些新生成的密钥对是可以通过 LS0 从 block 数据库中重新算出来的,是不怕丢失的。)
比较匆忙,不知道写清楚没有。