区块链笔记

区块链

从技术角度讲,区块链所涉及的领域繁杂,包括分布式系统、密码学、心理学、经济学、博弈论、控制论、网络协议等
交易(Transaction):一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录;
区块(Block): 记录一段时间内发生的所有交易和状态结果等,是对当前账本状态的一次共识;
链(Chain): 由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。
核心技术:
1. 点对点分布式技术(P2P): 点对点技术(peer-to-peer, 简称P2P)又称对等互联网络技术,它依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。P2P 技术优势很明显。点对点网络分布特性通过在多节点上复制数据,也增加了防故障的可靠性,并且在纯P2P网络中,节点不需要依靠一个中心索引服务器来发现数据。在后一种情况下,系统也不会出现单点崩溃。
  2. 非对称加密技术: 非对称加密(公钥加密)指在加密和解密两个过程中使用不同密钥。在这种加密技术中,每位用户都拥有一对钥匙:公钥和私钥。在加密过程中使用公钥,在解密过程中使用私钥。公钥是可以向全网公开的,而私钥需要用户自己保存。这样就解决了对称加密中密钥需要分享所带来的安全隐患。非对称加密与对称加密相比,其安全性更好:对称加密的通信双方使用相同的秘钥,如果一方的秘钥遭泄露,那么整个通信就会被破解。而非对称加密使用一对秘钥,一个用来加密,一个用来解密,而且公钥是公开的,秘钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。
  3. 哈希算法: 哈希算法又叫散列算法,是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。它的原理其实很简单,就是把一段交易信息转换成一个固定长度的字符串。
  4. 共识机制: 由于加密货币多数采用去中心化的区块链设计,节点是各处分散且平行的,所以必须设计一套制度,来维护系统的运作顺序与公平性,统一区块链的版本,并奖励提供资源维护区块链的使用者,以及惩罚恶意的危害者。这样的制度,必须依赖某种方式来证明,是由谁取得了一个区块链的打包权(或称记帐权),并且可以获取打包这一个区块的奖励;又或者是谁意图进行危害,就会获得一定的惩罚,这就是共识机制。通俗一点来讲,如果中国一名微博大V、美国一名虚拟币玩家、一名非洲留学生和一名欧洲旅行者互不相识,但他们都一致认为你是个好人,那么基本上就可以断定你这人还不坏。
  常见的共识机制:
  工作量证明(Proof-of-Work,PoW);
  权益证明(Proof-of-Stack,PoS,又译持有量证明);
容量证明(Proof-of-space,PoSpace,又称 Proof-of-Capacity,PoC)

上游: 矿机产业 中游:区块链产业  下游:DAPP产业 周边:交易所与社区

coin (包括山寨coin)是一种数字货币,它通过加密技术创造出来,可以实现价值存储。
Tokens是数字资产,由一个基于区块链的项目所发行,它可以作为其生态系统内的一种支付方式,执行类似coin的货币功能。但是,主要的区别在于Token也赋予持有人参与网络的权利。
您可以用coin购买Token,但不能反过来,因为token只在特定项目中有特定的用途。

发展-----------------------------------------------------------------------
场景 功能 智能合约 一致性 权限 类型 性能 编程语言 代表
数字货币: 记账功能 不带有或较弱 PoW 无 公有链 较低 简单脚本 比特币网络
分布式应用引擎: 智能合约 图灵完备 PoW、PoS 无 公有链 受限 特定语言 以太坊网络
带权限的分布式账本:商业处理 多种语言,图灵完备 包括 CFT、BFT 在内的多种机制,可插拔 支持 联盟链 可扩展 高级编程语言 超级账本

节点: 区块链中的节点,通常是指下载了相关加密货币(比特币、Ethereum、Monero等)软件,以参与对等网络的计算机。

工作量证明机制(POW) 即Proof of work。
POS就是“股权证明”,Proof of stake,即直接证明你持有的份额。工作原理是利益捆绑。
15s(POW博弈原理)–>5s(POW最快)–>1s(而POS的Casper有可能做到秒级别的共识。一秒钟之后出块。)

同态加密 私有链

以太坊中有两种账户: 外部拥有账户(EOA),合约账户
"交易"这个术语在以太坊里被用来指代一个用来存储消息的被签名数据包在区块链上从一个外部拥有账户发送至另一个账户的过程。
交易包括:
这个消息的接收者,
一个签名,用来证明发送者有意向通过区块链向接收者发送消息,
价值域 - 从发送方转移到接受方的wei (ether/10^18) 的数量,
一个可选的数据域,用来储存发送给合约的消息,
一个GASLIMIT值,代表了这个交易的执行最多被允许使用的计算步骤,
一个GASPRICE值,代表了交易发送者愿意支付的gas费用。一个单位的gas表示了执行一个基本指令,例如一个计算步骤
消息
合约具有发送"消息"到其他合约的能力
。消息是一个永不串行且只在以太坊执行环境中存在的虚拟对象。他们可以被理解为函数调用(function calls)。
一个消息包括: 明确的消息发送者,消息的接收者,一个可选的数据域,这是合约实际上的输入数据,一个GASLIMIT值,用来限制这个消息出发的代码执行可用的最大gas数量

一个消息就像是一个交易,由合约账户生成。
当合约正在执行的代码中运行了CALL 或者DELEGATECALL这两个命令时,就会生成一个消息。
消息有时也被称为"内部交易"。
与一个交易类似,一个消息会引导接收的账户运行它的代码。
因此,合约账户可以与其他合约账户发生关系,这点和外部账户一样。
有许多人会误用交易这个词指代消息,所以可能消息这个词已经由于社区的共识而慢慢退出大家的视野,不再被使用。

每个被执行的命令都会有一个特定的消耗,用单位gas计数。每个合约可以利用的命令都会有一个相应的gas值。
区块gas limit是单个区块允许的最多gas总量,以此由在网络上的矿工决定单个区块中能打包多少笔交易。
与可调整的区块gas limit协议不同的是一个默认的挖矿策略,即大多数客户端默认最小区块gas limit为4,712,388。

多个私钥可以有相同的地址。

一个以太坊账户与一个地址相关联,而且每个地址都有以下属性:
nonce: 输出交易的次数,从 0 开始
balance: 账户中的以太币数
storageRoot: 与账户存储相关联的哈希值
codehash: 控制账户的代码的哈希,如果它是空的,那么就是一个正常账户,能够通过私钥访问的,否则,它就是一个智能合约,其交互受到代码的控制。

接下来我们看一下交易,交易有 6 个输入域:
nonce: 输出交易的次数,从 0 开始
gasPrice: 交易中花费的单位 Gas 的价格
gasLimit: 处理交易允许花费的最大 Gas 量
to: 交易发送到的账户,如果是空,交易就会创建合约
value: 发送的以太币的量
data: 可以是任意的消息或合约函数调用或创建合约的代码

区块链交易过程详解:

某人发出交易请求
广播交易请求到 P2P 网络
验证
miners验证交易正确性
多个交易组成一个区块
新的区块加入到一个已经存在区块链中
交易完成

交易记录这么存 :

1. 连接节点
2. 获取最新区块 区块里面是交易json
3. 对比交易信息
4. 解析里面的json
5. 落库交易记录

上一篇:linux – 如何知道patch命令是否正常工作?


下一篇:linux – 当存在完整路径时,如何使用补丁在不同的文件夹上为文件夹应用diff文件?