go语言部署上线 go语言包( 五 )


第三步,链下转账 。在光子网络的支持下,Alice可以向Bob发送30token的转账,因为目前Alice和Bob之间存在直接通道,并且在通道内Alice有100 token的余额 , 因此 , 直接通道转账成功 。转账完成后,Alice的存款为70token,Bob的存款为30token,此时,因为交易成功发送,没有锁定token 。Alice向Charlie发送20token的转账 , 因为Alice和Charlie之间没有直接通道,所以不能进行直接通道链下转账;但是 , Alice和Bob,Bob和Charlie之间有直接通道,Alice可以通过Bob向Charlie进行间接通道转账 。转账完成后,Alice—— Bob通道内余额为Alice 50token,Bob 50token; Bob—— Charlie通道内余额为Bob 60token,Charlie 20token 。
第四步:关闭通道 。Alice在与Bob交易完成后,不想再继续使用她们之间的这条通道,想取回通道内的资金,此时Alice可以使用关闭通道功能单方面关闭这条通道 , 并等待通道更新后进行结算 。
第五步:更新通道 。Alice为了不损失钱,在通道关闭的同时需要提交最新的余额证明,更新对方给自己的转账金额;同样 , Bob得知Alice打算关闭他们之间的通道 , 为了防止自己受损失,Bob也需要使用更新通道功能,提交Alice转账给自己的证明,双方更新通道余额(并解锁已注册锁的交易)后,可以进行通道结算 。
第六步:结算通道 。双方在结算窗口期后 , 任意一方可以使用通道结算功能将通道内的资金返还回双方各自的链上帐户中 。如Alice 50token ,Bob 50token 。结算完成后,Alice——Bob这条通道将被销毁 。
2.2 特色功能
在基础功能之外 , 光子网络还有以下一些特色功能 。
(1)合作关闭通道
在大部分的情况下,通道的双方是合作的 。因此 , 单方关闭通道等待超时增加了复杂度和花费 。为了提高效率,光子网络增加了合作关闭通道功能,通道双方只需要签名表示同意最终状态 。双方合作关闭通道,可以立即进行结算,顺利情况下可以在20秒内,将 token 返回到各自账户上 。
(2)不关闭通道取现
通道参与双方通过协商一致,在不关闭通道的情况下,可以从通道中提取一部分资金到自己的链上账户 。光子网络为了防止重放攻击,在取钱后重新设置通道打开的区块数,防止取钱后一方使用旧的余额证明关闭通道获取额外利益 。
(3)更完善的第三方支持
光子网络提供第三方代理服务,支持代理提交余额证明,代理解锁等功能,并可延伸支持代理创建通道、代理存款等功能,通道参与双方可以在没有光谱(以太坊)的情况下(离线)进行创建通道等操作 , 并且保证自身利益的安全;光子网络提供第三方路由查找服务,优化路由计算效率和准确率以提高转账成功率,同时实现通道收费功能 , 激励中间节点以提升光子网络整体使用效能 。
(4)引入惩罚机制
为了提高路由效率及资金的利用率,光子网络设计了交易声明放弃方式取代交易双方互锁方式 , 中转节点声明放弃余额不足的转账,从通道双方的锁集合中移除这个转账 , 由前向节点重选路由转发 。如果放弃锁的节点在结算前对已放弃的锁重新解锁,光子网络将对不诚实的路由中间节点进行惩罚 。
(5)密码注册
光子网络新增密码链上注册功能,通过链上密码注册时间判断交易是否过期,未完成的短期交易(锁超时)只要有密码(secret)已经注册即可认为安全,资金通道利用率更高,不会因为某个交易失败,而造成通道关闭 。
(6)支持 ERC223 token
ERC223 token标准在现有的ERC20标准基础引入了一些新功能,如防止意外转账的发生等 。目前已有部分token支持ERC223标准 , 为了使光子网络更具普遍应用价值,相应增加了对ERC223 token的支持 。

推荐阅读