记录一次烦人的编译问题,因为这个过程可以能可能会对以后解决类似问题有一定的参考性,特地做个记录。
SPV节点获取merkerblock数据
在之前的文章中提到了SPV节点,一直说要写文章说明是什么是比特币SPV节点。网上有很多文章来描述这个问题,我之前也写过相关的文章,有兴趣的话可以回去查阅相关问题。简单来说,SPV节点最主要的特点就是:只存储头信息(BlockHeader)。所以他做到了存储数据规模大幅减少,只有完整数据的千分之一的水平。所以SPV节点适合在存储有限的设备上运行,比如手机客户端。但是本文的重点不是重复讲述SPV节点的概念的,而是换一个角度,从比特币网络协议入手,描述如何从全节点下载SPV所需的数据到节点上(SPV节点上)。这个所需的的信息,就是merkerblock。
如何给过长数组实现Debug
更新:rust在2021年实现了const
generics。以下的问题不会存在了。
在rust中,我们可以很方便的用Derive给结构体实现Debug宏(是编译器自动实现的),但是编译器给数组实现的Debug只有长度在32以下的,要是超过32位就得自己实现了。所以出现了本文的问题
周报,软件构建和职业发展
吾日三省吾身
——《论语·学而》
距离上次频繁发布文章,已经过去一个多月了。这一个多月以来,我非常认真的研究关于取款链交易和SPV节点相关的问题。今日又听闻leader关于自己软件生涯的反思和总结。leader开发生涯漫长,反思亦有重大价值,故作文。
Rust关于数据溢出安全
在4个多月之前,也就是19年的7月份。在大佬的推荐下,有幸拿到了今日头条的面试机会。在漫长的面试过程中,头条的面试官态度热情,问的问题兼具广度和深度。再很多问题回答的一塌糊涂的条件下,也让我面试了长达五小时。特别的最后的面试官,态度友好且诚恳,对我的诸多不足之处提出委婉的建议。有这样的面试体验是非常棒让我获益良多,在此表达我的感谢之情。不过本篇文章不是讲述面试经验或者体会的,是讲面试中被反复提到的问题:
构建离线交易
本文是在之前的复杂交易的基础上进行的,离线签名主要是为了满足以下场景
关于学习的两三事
昨日开周会leader在会后又一次强调了自己对于编程生涯的一些经验,也提出了一些对我们团队的一些告诫。以前参加过很多会议但是很少有人直接拿出自己的经验进行”传授“,所以作此文,对leader传授经验的经验进行复述。毕竟现在听到肺腑之言的机会也不是那么多。
构建复杂交易
本文在之前的基础上构建复杂交易。
创建具有找零地址的交易
之前的文章讲了构建裸交易的过程,但是上文直接构建裸交易是没有创建找零地址的,所以输入和输出的差值都会成为矿工的交易费。极容易造成高额的交易费,所以这篇文章在之前的基础上使用 fundrawtransaction 来创建具有找零地址的交易。