Campaign
Campaign overview
过去数年,几位希望透过节点多样化去支持BCH的开发工程师一直维持着Bitcoin Verde的营运。我们身为开发工程师,对能够为使用者提供日常生活中实际用处的软件充满热诚。开发和营运Bitcoin Verde由一种学习体验,在超出预期的情况下慢慢蓬勃发展成为我们生活中一大部份。
我们是Bitcoin Verde,在这个计划书中我们简要介绍了自己和对实行计划的展望。以下段落中,我们将详细叙述最显着的特点,而这些特点对我们的持续发展及达成目标是必要的。我们希望透过运行全节点,继续支持BCH网络,最终Bitcoin Verde会成为矿工们一个可行的选项。
关于我们
Bitcoin Verde是一个BCH全节点软件,由Software Verde的持有者Josh Green成立。Software Verde由一群来自美国俄亥俄州哥伦布的全栈型工程师组成,致力开发能服务我们社区,客户及朋友的科技。团队主要成员有Josh Green,Andrew Groot,Eliot Lesar和John Jamiel,我们作为终身科技爱好者,跟开放源码软件有不解之缘。
我们在2017年末,BCH硬分叉后数月开始了我们打造Bitcoin Verde的旅程。本著对贡献的热情,我们决定直接实践才是最好的学习方式。在踌躇由何开始之时,Josh发现到:大多数的节点客户端都是Bitcoin Core的分叉。在这之后,我们便意识到要完整学习并做出贡献,没有比从头新建更好的方法。于是Bitcoin Verde于2019年一月加入生态圈,主要的目的是给网络提供多样性。通过发布一个有索引的Java全节点,我们认为已经达成了这目标。
在开始之后我们与许多群体展开了合作来给社区做贡献,其中既有科技人员也有其他人。我们参与了许多讨论,给地方政府提供教育,与 Bitcoin Unlimited合约来给BCH提供详细规格,并继续改进我们的软件,这些工作都值得我们骄傲。过去几年,我们辛勤工作来确保这些工作对社区有意义、有价值。目前Bitcoin Verde提供一份全节点软件,区块浏览器,和开发工具库。我们希望未来能继续改良自家的软件,有一天能提供钱包和矿池模组。
我们的目标
我们今次的活动目标是获得足够的兴趣及支持,从而筹集到目前发展路线图的资金。现时Bitcoin Verde有四项核心功能,而我们相信对于BCH使用者,不管是全节点营运者还是矿工,以下四项功能都有助我们的方案维持竞争力:
- 创造一个无索引模组
- 创造一个区块模板验证服务
- 实行Testnet配置
- 修改Bitcoin Verde Explorer(浏览器)以支持Memo(备忘)
工作計劃
创造一个无索引模组
目前Bitcoin Verde提供很大部份的区块链索引,部份索引元件包括(但不限于):
所有交易
所有输出及输入(包括消费及无消费)
P2PK/P2SH地址
SLP代币
SLP验证
受争议的/孤儿区块 这些索引对浏览器及钱包服务而言非常有用处,可是同时为验证服务带来很多弊病而且在挖出节点上没有实际用处。有见于此,创造一个无索引模组将会带来数个好处,有助我们达成团队目标—成为一个可行的挖矿选项。好处包括:
减少下载最初区块的时间
容许矿池在合理的时间下开始运行Bitcoin Verde节点
减少最低资源要求
降低矿工及无索引节点营运者的市场门槛
容许矿池营运者以较低的价格运行多余/后备节点
减少Bitcoin Verde节点的整体架构成本
解决方案
使用cacheBlocks的情况下,区块被序列化并储存在硬碟内,很多有关交易、地址及SLP的SQL表格会被移除。
- 创造一个新的交易表格,表格会列出硬碟内交易区块的储存位置和平面档案中交易的偏差值
- 已索引及标准化资料库比较浪费空间及低效能,因此转移已挖矿的交易到压缩格式的平面档案
- 为了保持模组间mempool/未核实交易的逻辑一致性,未核实交易将重新命名及重新使用较早的交易表格
- 索引及标准化未核实交易容许Bitcoin Verde维持无限的交易链结,而毋需任何额外开发
- 当交易在区块内被挖出,将会从未核实交易表格中删除,然后被储存在区块平面档案内
- 由于SQL交易表格档案小,单独索引未核实交易只在名义上增加硬碟的节点足印,同时容许将来功能的扩展及基于将来新区块作出的複杂决定
- 表格将会加入总交易大小及总费用,以改善区块模板的产生
这些改动主要影响由TransactionDatabaseManager及相关类别封装的资料层,验证逻辑及网络逻辑可能会有轻微影响。多数现存的测试基于直接操控资料库的资料。
模式不同的情况下,运行这模组的模式改动时,这些测试将会损坏。由于原有的测试套件默认载入索引模式,所以这些模式改动不会导致原有的测试套件损坏。可是,在这配置下,很多测试将不会运行新模式,导致必要机能的测试复盖度上有一个颇大的落差。
- 这份提案包含目前存在测试的扩展,以涵盖无索引模式及索引模式的复盖率。
里程碑、成果交付及预计难题
我们预计完成此扩建部分需要180小时,我们的方案由三个里程碑组成,每一个里程碑都有不同的难度。我们提议基于预计难度及时间,按比例分配资金基于预计难度及时间去达成这些里程碑,而我们每完成一个里程碑将收到资金。
- 重构SQL模式及转移资料层 80/180小时(45%)
第一个里程碑将包括如上所述的解决方案中的SQL模式及逻辑改动。移除所有表格及节点完成其main-net的初始区块下载,第一个里程碑才算完成。
- 为新资料层更新测试 60 / 180 小时 (33%)
第二个里程碑将更新所有损坏测试,以保证现存回归测试会通过。此外,第二个里程碑包括扩大现存测试套件以运行无索引模式及索引模式。
- 透过区块模板聚合器测试main-net一个月 40 / 180 小时 (22%)
节点同步到main-net后及节点区块模板与Bitcoin ABC、Bitcoin Unlimited nodes相容后,第三个里程碑将会总合以上。完成此里程碑需要更新包含在2020-05升级的新sigops规则集及完成区块模板聚合器,这样其他运行目前main-net节点的软件才能自动验证Bitcoin Verde产生的区块模板。在没有不相容的情况下,创造main-net区块模板达一个月后,第三个里程碑即告完成。
区块模板验证服务
由于节点不相容性,矿工挖出的区块有造成区链断裂或孤儿化的风险。以矿工的观点而言,再微细的相容性风险也可能对收益造成极大的影响。这些相容性风险会促使矿工和矿池使用同一个节点运算,此举会大量减少矿工间的节点多样化。
这区块模板验证服务(TVS)目的在于将矿工创造无效区块的风险减少至接近零,方法为在开始任何区块模板工作前,先兴其他软件验证区块模板的有效性。此举好处如下;
— 减低无意中挖出会造成区块链断裂的区块的风险 — 减低矿工使用不同节点运算的经济风险 — 增加矿工对节点多样化的信心 — 提醒开发者不相容区块的可能性
解决方案
创造一个可连接至不同节点软件最新版本的服务(验证节点):
- BCHD
- Bitcoin ABC
- Bitcoin Unlimited
- Bitcoin Verde
- Flowee The Hub
如BIP-22、BIP-23、BIP-9及BIP-145列明中,此服务会接受getblocktemplate的标准区块模板。
一旦接收到区块模板,此服务会保证每一个有效节点会见到区块模板中的每项交易。
- 服务尝试为每一个运算验证区块模板
- 服务之后回复请求方有否发现无效模板
软件会尽最大努力去确定哪项交易触发区块模板的无效性,这样请求方就能选择省略它们。
有效节点有机会不能够验证区块模板,此解决方案会
- 界定正式BIP去扩展getblocktemplate,以便其提案模式为了区块资料容许一个无视验证证明的标记
- 创造参考性节点运算,然后为Bitcoin ABC拉出请求以完成以上getblocktemplate扩展
由于目前主要市场佔有率,为Bitcoin ABC提供运算
- 如其他运算软件提供相似的所需功能性,但没有直接使用getblocktemplate,这个问题将来可能会被延续,以达成那些运算软件的相容性。
Bitcoin Verde目前不支持getblocktemplate的提案模式,这个问题将改动目前相等的功能性以赶上getblocktemplate RPC API,包括提案模式。
里程碑预计及成果交付
我们预计完成此扩建部分需要160小时,我们的方案由四个里程碑组成,每一个里程碑都有不同的难度。我们提议基于预计难度及时间,按比例分配资金基于预计难度及时间去达成这些里程碑,而我们每完成一个里程碑将收到资金。
- 界定服务API,以验证区块模板。 30/160 小时 (18.75%)
- 调用多款RPC getblocktemplate:proposal援助已连接节点,以验证区块模板,然后退回验证状态。 30/160 小时 (18.75%)
- 创造正式BIP去扩展目前getblocktemplate:proposal的功能性,然后为Bitcoin ABC参考运算。 60/160 小时 (37.5%)
- 改动Bitcoin Verde以完成以上计划的BIP。 40 / 160 小时 (25%)
实行Testnet配置
目前Bitcoin Verde只容许mainnet的连接。即使历史上边缘案例的测试已经透过公众单元测试完成无数遍,另外还是有整合测试显示出Bitcoin Verde连接testnet有不少好处,特别在硬分叉的时候testnet被大幅使用。
如果Bitcoin Verde和其他运算软件的不同会导致不同种类的测试交易,Bitcoin Verde连接到testnet,其对测试BCH的独特观点还可以为其他运算软件提供帮助。
这还未被实行的众多原因之一,是testnet在交易及区块如何被传递、验证及挖出上,有一连串的不同。因此,这些不同之处在新的配置下,必需被设为可切换的。
此解决方案会提供:
- 一个额外测试模式,与现时相比会提供更多好处
- 在testnet上比较少被禁止的边缘交易案例,增加其曝光率
- 为硬分叉测试改进与其他节点运算软件的协调
解决方案
即管Bitcoin Verde目前没有执行交易的标准度,也应该採取措施以保证如果/当Bitcoin Verde增加标准度检查,这些检查在连接到testnet的时候不会生效。
为了与testnet合作,需要以下更新:
- 可替代的备用端口号码,magic number及DNS种子
- 不同地址版本号码及prefix
- 不同的genesis block
- 额外难度调整规则
里程碑预计及成果交付
我们预计完成此扩建部分需要60小时,我们的方案由两个里程碑组成,每一个里程碑都有不同的难度。我们提议基于预计难度及时间,按比例分配资金基于预计难度及时间去达成这些里程碑,而我们每完成一个里程碑将收到资金。
- 使用不同静态内容更新元件。 20 / 60 小时 (33%)
第一个里程碑是纯粹与BCH testnet进行通信所需的改变,包括端口号码,任何会影响网络协议的讯息内容及genesis block的资料。当所有元件完成更新及公布,第一个里程碑便算完成。
- 保证完全同步的可行性 40 / 60小时 (67%)
第二个里程碑将需要我们更新交易及区块验证规则,以保证Bitcoin Verde将可能接受它现在要求及接收的内容。只有确认完全同步的时候,第二个里程碑就会完成。
修改Bitcoin Verde Explorer(浏览器)
Bitcoin Verde节点及浏览器目前不支持Memo(备忘)。终端使用者及开发者依赖区块浏览器去检查他们区块链行动的真实性。
浏览器现时提供的支援虽不多,但尚有很大的发挥空间。我们完全支援SLP and Memo的话,将会为其他浏览器带来更多可行的备用选择,而浏览器使用者和营运者亦会有更多平台可供选用。
这些额外的功能令其他开发人员轻易检视到Bitcoin Verde的验证结果,这对本身不会被矿工验证的OP_RETURN-like应用来说,更是有莫大的价值。
总括而言,改动将会:
- 吸引会透过Memo protocol发讯息的使用者使用Bitcoin Verde explorer
- 容许其他开发人员轻易检视他们OP_RETURN-based交易的真实性,从而交叉验证其执行及一致性
- 继续支援legacy地址格式,另加入CashAddr支援
解决方案
加入Memo支援
- Bitcoin Verde将会解析Memo protocol交易
- 节点将索引Memo交易
- 执行程序为已同步的节点back-port索引
- 更新RPC calls以涵盖Memo data,类似为SLP提供的功能
- 更新浏览器API以涵盖Memo data
- 浏览器将显示已列表的Memo data,类似bitcoin.com
里程碑预计及成果交付
我们预计完成此扩建部分需要56小时,我们的方案由两个里程碑组成,每一个里程碑都有不同的难度。我们提议基于预计难度及时间,按比例分配资金基于预计难度及时间去达成这些里程碑,而我们每完成一个里程碑将收到资金。
- Bitcoin Verde (节点) Memo支援 40 / 56 小时 (71.5%)
第一个里程碑包含所有节点所需的改动以支持Memo protocol,包括RPC calls。此里程碑不包括浏览器的所有Memo支援。
- Bitcoin Verde (节点) 浏览器支援 16 / 56 小时 (28.5%)
第二个里程碑包含所有浏览器的改动以支持Memo protocol。
资金请求
总结如上,我们预期下一个开发周期将耗时大约456小时,由三个工程师及一个技术写作员完成。以每小时0.6 BCH工资来计算,这提案的资金请求总数为273.6 BCH。然而,在建立这筹资活动前,如GitHub上独立事项所示,Josh Green已经为每项功能撰写了筹资提案。
基于我们已经交付了个别的成果并筹集到24.838 BCH资金这点,不扣除这些资金将会是一个不负责任的做法。所以经调整后,剩下的筹资总数为241.162 BCH或大约$62,000,而资金可被分为4个成果交付,总数11个里程碑。
感谢
开展这个计划是一个大工程。全赖社区不断的慷慨支持,我们的营运才能延续至今。我们感谢每个网络及所有捐助者的给予的机会,希望我们可以继续在BCH社区佔一席位及为社区的茁壮成长作出贡献。