关注我,分你小鱼干
最近又开始封号了,作为从业者,感受到的不是凉意,而是暴击。
以前美国有个调查,经济大萧条期间,人们反而更愿意进行娱乐消费,比方说看电影。为什么呢?因为赚钱又赚不到,整天愁容满面,哭哭啼啼,也无济于事,看个电影,至少还能麻醉一下自己。
听说,最近,就有不少人,沉迷于“延禧攻略”“如懿传”当中,我妈曾经跟我说,演戏的是疯子,看戏的是傻子。仔细想来,这话真有道理。阴谋算计,海誓山盟,不过是别人的剧本,与自己又有多少关系?
领袖说打工是不可能打工的,这辈子不可能打工的。
我说:逃避是不可能逃避的,这辈子都不可能逃避的。
经济不会因你视而不见,而变得好起来;
生活,不会因你麻木不仁,而善待你多一点;
才华,更不会因你胡思乱想而有所提升。
而学习,仍然是熊市、迷茫中,最好的选择。
与伟大者同行,如沐春风。
下面是近期一则读书笔记,与大家分享。
Hash函数
Hash函数又称为哈希函数、散列函数、杂凑函数。它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。
由于Hash函数这种单向的特征及长度固定的特征使得它可以生成消息或数据块的消息摘要(也称为散列值、哈希值)
ECDSA数字签名
比特币区块链中,每个交易都需要用户使用私钥签名,只有采用该用户公钥验证通过的交易,比特币网络才会承认。
节点向其他节点广播自己存在的区块并互相交换区块,从而建立区块链blockchain。节点在收到数据块的同时,会验证数据块是否合法,并将内存中与数据块重复的交易信息清除掉。
节点之间互相交换并传输交易,客户端把交易关联到本地钱包的比特币地址。交易信息会被广播到全网节点上,每个节点都会验证交易的前一个动作是否合法,如果合法,就将交易保存在内存中,等待进入数据区块block。
待签名一个账单并把签单发送到全世界以后,所有收到这个单子的客户端都会效验你这个单子对不对,比如会效验你的签名,是不是你发的,以及你是否有那么多钱等。
如果大家算过这个交易没问题,那么基本上就算转账成功了,等待打包进入区块,进而进入区块链。区块即是收集上面广播的tx并带上挖矿的coinbase tx,它们会作为一个整体纪录等待被“挖矿”记入区块链。
脚本的本质就是实现逻辑的动态控制过程,比如游戏中经常用lua脚本控制游戏逻辑。比特币使用的脚本系统是一个基于栈的,从左到右的,为了安全考虑特意设计成没有循环的非图灵完备系统。
比特币的脚本系统主要用于对交易的当前输入及其上一个输出进行身份校验,从而确认该笔交易是否有效。上一笔的输出脚本就是拥有者宣告谁能消费这笔钱的锁,当前交易的输入脚本就是打开这把锁的钥匙,从而宣告自己拥有这笔钱,进而完成这笔钱的转移,即交易的核心。脚本系统就是智能合约,使用脚本系统的比特币则称为第一种可编程的货币。
挖矿
就是用Hashcash概念打包区块block至区块链blockchain,并自生新币coinbase的过程挖矿有两个目的:一是产生新币,二是打包转移旧币。挖矿逻辑中有一个核心概念就是Hashcash,理解了它就理解了挖矿。
CPU时间,因此系统会定时发放Bitcoin以奖励贡献计算资源的系统维护者,Bitcoin就此在网络中产生,这也是Bitcoin产生的唯一方式,称为挖矿(Mining)。
因为根据私钥可以导出公钥,公钥又可以导出地址,地址又可以在区块链中查询到交易,所以钱包的核心就是私钥的保存与使用。私钥就是你的钥匙,脚本系统保证你用这把钥匙去打开区块链里的一把或多把锁,从而宣告拥有的比特币余额。所以一定要保管好你的私钥,而不是你的钱包。
以太坊
以太坊是一个全新的开放的区块链平台,它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。
以太坊是可编程的区块链它并不会给用户一系列预先设定好的操作(例如比特币交易),而是允许用户按照自己的意愿创建复杂的操作。这样一来,它就可以作为多种类型去中心化区块链应用的平台,包括加密货币在内,但并不仅限于此。
以太坊狭义上是指一系列定义去中心化应用平台的协议,它的核心是以太坊虚拟机(EVM),其可以执行任意复杂算法的编码
和其他区块链一样,以太坊也有一个点对点的网络协议。
这个贯穿整个以太坊网络的大规模并行运算并不是为了使运算变得更加高效。实际上,这个过程会使得以太坊上的运算比在传统“电脑”上更慢更昂贵。然而,每个以太坊节点都运行着以太坊虚拟机是为了保持整个区块链的一致性。去中心化的一致性使得以太坊具有极高的故障容错性,保证零停机,而且还可以使存储在区块链上的数据永远保持不变且具有抗审查性。
以太坊作为一个智能合约平台,和编程语言相似,是由企业家和开发者来决定其用途的。
对用户来说十分熟悉的特征和技术,同时自己也进行了很多修正和创新。比特币区块链纯粹是一个关于交易的列表,而以太坊的基础单元是账户。以太坊区块链跟踪每个账户的状态,以太坊区块链上的所有状态转换都是账户之间价值和信息的转移。
对于大部分用户来说,两者最基本的区别在于外部账户是由人类用户掌控的——因为他们能够控制私钥,进而控制外部账户。而合约账户则是由合约代码管控的。如果它们是被人类用户“控制”的,那也是因为程序设定它们可以被外部账户控制,进而被持有私钥的用户控制。“智能合约”这个流行的术语指的是在合约账户中编码——交易被发送给该账户时所运行的程序。用户可以通过在区块链中部署编码来创建新的合约。
这是因为以太坊要求节点能够与运算结果保持一致,这就要求保证正确执行所有操作。
和比特币一样,以太坊用户必须向网络支付少量的交易费用。这可以使以太坊区块链免受无关紧要或恶意的运算任务干扰,比如分布式拒绝服务(DDoS)攻击或无限循环。交易的发送者必须在激活的“程序”的每一步付款,包括运算和记忆储存。费用通过以太坊自有的有价代币、以太币的形式支付。
交易费用由节点收集,节点使网络生效。这些“矿工”就是以太坊网络中收集、传播、确认和执行交易的节点。
一个成功的区块就会得到以太币的奖励。这就为人们带来了经济激励,促使人们为以太坊网络贡献硬件和电力。
为防止比特币网络中已经发生的专门硬件(例如特定用途集成电路)造成的中心化现象,以太坊选择了侧重于消耗更多内存的运算问题
如果问题需要内存和CPU,那么理想的硬件就是普通的电脑。这就使以太坊的工作量证明具有抗特定用途集成电路的特性,和比特币这种由专门硬件控制挖矿的区块链相比,能够带来更加去中心化的安全分布账户在以太坊中发挥着中心作用。
智能合约既有余额也有合约数据。所有账户的状态代表的都是以太坊网络的状态,以太坊网络会和每一个区块一起更新,网络需要达成关于以太坊的共识。对于用户通过交易和以太坊区块链互动来说,账户是必不可少的。(部份)
读《区块链开发指南》笔记
作者:申屠青春等
合作联系方式:bqhxq2018
空·
领取专属 10元无门槛券
私享最新 技术干货