2018年7月12日
经过前一阶段广泛深入的测试,UnitedBitcoin(“UB”比特联储)很荣幸地宣布将支持智能合约以及工作量证明(“POW”)和权益证明(“POS”)的混合共识机制,以升级其协议。该协议计划于区块高度551,111在UB主网上通过硬分叉实现升级。
硬分叉是通过对底层协议进行更改来升级网络的一种常规方式。
在硬分叉期间,UBTC用户无需进行任何操作, 其UBTC仍可正常使用。但谨慎起见,用户可以在硬分叉时暂停转账。
虽然硬分叉是安全且常规的,请注意以下有关在UB主网上添加POS和智能合约功能的要点:
新的POS和POW区块版本
新的链将支持两个新的区块版本。矿工(POW)必须为他们的区块使用新的区块版本。可以用新钱包(版本2.1.0)的“getblocktemplate”调用可用的区块版本。
新的区块版本如下:
POW block version: 0x02000000
POS block version: 0x01000000
UBTC钱包启用POS挖矿的方法:
安装QT钱包后,在桌面上创建快捷方式。右键单击以选择属性,并在目标字段的末尾添加以下参数“-staking”。
同样,在Linux平台下启动钱包的时候,在ubcd后面加上“-staking”参数即可。
POW和POS竞争出块,因此将POW、POS的出块时间间隔调整为2分钟。区块奖励保持1个UBTC不变。
UBTC奖励的锁定期仍为7,200个区块。在UTXO确认数达到4,800时,该UTXO才可以被用来做POS挖矿。POS挖矿的权重和UBTC金额关联,因此用户钱包中确认数大于等于4,800的UTXO越多,UBTC金额越大,越容易出块。
关于在UB主网添加智能合约支持的说明:
Coinbase交易中,硬分叉后额外增加了一个txoutput。这个txoutput保存了root state hash(根哈希),并且此tx output的value为0。需要相关矿池确认产块构造coinbase交易的方式。
合约交易中手续费的计算方式不再是vin的总金额与vout的总金额之差,而是vin的总金额与vout中从合约提现的总金额 (script中某个数值) 之和减去vout中充值到合约的总金额(script中某个数值)再减去vout中其他交易的总金额。也就是说,矿池、交易所方面需要允许vin金额之和小于、等于或者大于vout金额之和。
也即:
原(非合约)交易手续费 = vin总额 – vout总额
合约交易手续费 = vin总额+vout从合约提现总额-vout充值到合约总额-vout其他交易总额
合约中增加的创建合约、调用合约、转账到合约、从合约提现的功能,均为特殊的script template。
支持开发智能合约的编程语言包括Java, C#, Kotlin, Lua。
智能合约支持存储,并且支持通过RPC获取某个合约的各storage的值。
关于交易所充值、提现智能合约版UBTC时产生手续费的说明:
在硬分叉之前和期间,谨慎起见,交易所可以暂停UBTC的充值、交易和提现。在硬分叉之后,交易所应注意以下几点:
充值提现的UTXO都是和比特币一样的常规UTXO。涉及充值提现的交易所需要注意检查充值交易的手续费,在添加智能合约后不再是vin与vout的差值,并且部分与合约相关的vout不会是充值入账的UTXO。
如果交易所的充值交易是从UBTC的QT重钱包中取得的,可以不检查充值交易的手续费。如果需要检查,需要解构合约相关vout来验证交易。
小结:
改进UnitedBitcoin比特联储网络的硬分叉将于区块高度551,111进行。 用户和交易所的操作体验将与之前的网络体验无异。用户不需要进行任何额外或特别的操作。矿工需要更新他们的区块模板。交易所可能需要更新有关智能合约充值交易的手续费。
QT钱包的2.1.0版本即日将会发布。如果您是QT钱包用户,请切记更新您的钱包至最新版本。
我们相信,此次硬分叉计划将使比特联储社区更加精彩纷呈。