• 主页
  • 相册
  • 随笔
  • 目录
  • 存档
Total 244
Search AboutMe

  • 主页
  • 相册
  • 随笔
  • 目录
  • 存档

区块链和智能合约背景知识

2023-01-31

1. Web 1/2/3.0

  • Web 1.0 是单向的。大公司创造了供人们阅读的内容,几乎没有交互,用户只能读取数据,只有内容创造者才能编辑和创作内容。所以,就像在图书馆看书一样,用户没有太多权利,他们只是消费者。
  • Web 2.0允许用户自主上传内容,分享内容;
  • Web 3.0 区块链 DApp 更注重以用户为中心,它将排除中间人,我们不必依赖私人公司控制的巨大数据服务器,我们的个人数据将更加安全和私密。由于没有中心化服务器,所有数据都将在设备之间传播,人们可以自由访问它们。

    区块链技术堆栈提出了称为语义网的主题。语义网意味着理解 Web 内容的方法,就像人类行为,它与机器学习和人工智能相关联,试图教会计算机理解数据及其行为方式。在语义搜索中,搜索结果将更加准确和相关。Web 2.0 依赖于关键字,页面权限和域权限来对内容进行排名,但 Web 3 浏览器试图像人一样理解 Web 内容。

2. 区块链

  • 区块链是一个全球性的去中心化分布式数据库账本
    • A blockchain is a digitally distributed, decentralized, public ledger that exists across a network.
    • 本质上就是个数据库
  • 这个技术平台是开放的、可编程的,它不仅能够记录金融 交易,还可以与智能合约相结合,记录并运行、维护几乎所有 有价值的东西

  • “区块”:指的是数据和状态是按顺序批量或”区块”存储的。 如果你向别人发送 ETH,需要将交易数据添加到一个区块中才算成功。
    • 本质上就是数据库中的数据,是一组交易记录(狭义)
  • “链”:指的是每个区块加密引用其父块。 换句话说,区块被链接在一起。 在不改变所有后续区块的情况下,区块内数据是无法改变,但改变后续区块需要整个网络的共识
  • “共识机制”:网络中的每台计算机都必须就每个新区块和链达成一致。 这些计算机被称为“节点”。 节点保证所有与区块链交互的人都有相同的数据。 要完成此分布式协议,区块链需要一个共识机制
  • 注意chain和Linked List都被翻译成了链表,但区块“链”的链是指chain,而他的结构式栈stack

2.1. 区块链系统

  1. 比特币(Bitcoin)
  2. 以太坊 (Ethereum)
  3. 超级账本(Hyperledger)

…

  • 区块链的系统进化过程可以归纳为 3 个阶段:
  • 区块链 1.0———数字货币;
  • 区块链 2.0———数字资产与智能合约;
  • 区块链 3.0———从 DAO(区块链自洽组织)、DAC(区块链自洽公司)到区块链社会(科学、医疗、教育等)
  • 其中,比特币、Litecoin、 Zcash 属于加密货币系统
  • 以太坊、超级账本、EOS、Parity 等 系统应用扩展到了数字资产与通用智能合约的范畴

2.2. DAO

  • Decentralized autonomous organizations去中心化自治组织
    • 是一种以公开透明的计算机代码来体现的组织,其受控于股东,并不受中央政府影响
    • Member-owned communities without centralized leadership. 解决中介问题
    • A safe way to collaborate with internet strangers. 解决信任问题
    • A safe place to commit funds to a specific cause

2.3. 分布式账本的优势

  • 分布式账本可以描述为在不同地点和人员之间以分散形式维护的任何交易或合同的账本。
  • 分布式账本的使用减少了网络攻击和金融欺诈
  • 分布式账本还可以减少运营效率低下,加快完成交易所需的时间,并且是自动化的,因此可以 24/7 全天候运行,所有这些都可以降低使用它们的实体的总体成本

2.4. 吐槽

  • 区块链系统的本质——一个公钥系统,私钥签名,公钥加密!
  • 然后为了防止赖账,以往的做法是引入一个中间人C,然后A to C C to B,现在不过是让所有人当中间人,看似去中心化,实际上所有人都是中心
  • 鼓励大家保持电脑开机,保持这个中间人一直存在,会给一些奖励
  • 然后挖矿就是数学难题,为什么要计算这个数学难题呢,本质上就和高考一样,是一种证明:高考证明我智力很高;挖矿证明自己电脑算力(其实就是配置)很好,更有作为中间人的资格
  • 当然,某种程度上分布式账本还是具有优势的,比如有时候超远距离交易需要太多中间人?以及成本优势?(本质上就是机器便宜但人力成本更贵?)

3. 比特币

  • 比特币的关键创新开始:它教会了世界如何 在没有可信第三方的情况下远距离转移价值。比特币开启了点对点电子价值转移的可能性
  • 类似比特币的系统是建立在我开始称之为“复制的、共享的账本”(“replicated, shared ledgers”)的东西之上的。 也就是说:网络中的每个完整参与者都拥有交易分类帐的完整副本,而系统的“魔力”在于它如何确保每个人的副本与其他人的副本保持一致( makes sure that everybody’s copy stays in step with everybody else’s)

以太坊的去中心化程度相对比特币就差很多,现在存在以太坊基金会以及V神(以太坊的实际创造者)等中心,ETH与ETC的分叉事件,充分说明了V神的绝对话语权,他说谁是正宗以太坊谁就是。最严重的问题还是以太坊的全节点数量太少。由于过度膨胀的区块数据,运行以太坊节点不再是普通人甚至普通团体能胜任的。成功同步以太坊区块数据需要极高的宽带以及存储资源,目前全球的以太坊全节点可能不足5个,一旦面临强力打压,会直接死掉

4. 以太坊

  • 以太坊是一个开源的支持智能合约功能的公共区块链平台

以太坊采用权益证明共识机制。 任何想在链上添加新区块的人都需要往存款合约里至少质押 32 个以太币并运行验证者软件。 然后,他们会被随机选择去提议区块,其他验证者检查区块并将其添加入区块链。 在这种模型中,通常只有一条链,但由于网络延迟和不诚实的行为,可能导致多个区块存在于链头部附近的同一位置。 为解决此问题,一种分叉选择算法会选择一组规范区块。 选择的区块是构成权重可能最大的链的区块,“权重”是指认可区块的验证者数量(并以验证者质押的以太币加权)。 还有一种奖罚制度,大力鼓励参与者尽可能诚实并在线


  • 以太坊是可编程的区块链。它并不是给用户一系列预先设定好的操作(例如比特币交易),而是允许用户按照自己的意愿创建复杂的操作。 这样一来,它就可以作为多种类型去中心化区块链应用的平台,包括加密货币在内但并不仅限于此。
  • 以太坊狭义上是指一系列定义去中心化应用平台的协议
    • 区块链是数据库,以太坊是协议
  • ,以太坊的核心是以太坊虚拟机(“EVM”),可以执行任意复杂算法的编码。
    • 以太坊是“图灵完备的”。开发者能够使用现有的JavaScript和Python等语言为模型的其他友好的编程语言,创建出在以太坊模拟机上运行的应用

所谓图灵完备,是指能用该编程语言模拟任何图灵机 .图灵完备的规则能够实现任何操作逻辑,例如,一种编程语言中包含条件控制语句 if,goto 等,并且能够维护任意 数量的变量,则可以编写出符合任何逻辑的代码,因此这种编 程语言具备图灵完备性

  • 比特币脚本是非图灵完备的,编写的智能合约交易模式非常有限,只能用于虚拟货币类应用

  • 以太坊区块链数据库由众多连接到网络的节点来维护和更新。 每个网络节点都运行着以太坊模拟机并执行相同的指令。因此,人们有时形象地称以太坊为“世界电脑”
  • 除金融类应用外,任何对信任、安全和持久性要求较高的应用场景————比如资产注册、投票、管理和物联网————都会大规模地受到以太坊平台影响

4.1. 以太坊虚拟机

While Ethereum has its own native cryptocurrency (Ether) that follows almost exactly the same intuitive rules, it also enables a much more powerful function: smart contracts. For this more complex feature, a more sophisticated analogy is required. Instead of a distributed ledger, Ethereum is a distributed state machine. Ethereum’s state is a large data structure which holds not only all accounts and balances, but a machine state, which can change from block to block according to a pre-defined set of rules, and which can execute arbitrary machine code. The specific rules of changing state from block to block are defined by the EVM

  • 以太坊不是分布式账本,而是分布式状态机器。 以太坊的状态是一个大型数据结构,它不仅保存所有帐户和余额,而且还保存一个机器状态,它可以根据预定义的一组规则在不同的区块之间进行更改,并且可以执行任意的机器代码。 在区块中更改状态的具体规则由 EVM 定义
  • EVM 的行为就像一个数学函数:在给定输入的情况下,它会产生确定性的输出。 因此,将以太坊更正式地描述为具有 状态转换函数非常有帮助
  • 类似一个操作系统

  • World state:The world state is a mapping between address and account state
  • An account is an object in the world state
    • An account is a mapping between address and account
    • An account state could contain EVM code and storage

type

  • Externally-owned account (EOA)外部账户 – controlled by anyone with the private keys
  • Contract account合约账户 – a smart contract deployed to the network, controlled by code.

address

  • 相当于index
    • A 160-bit code used for identifying account

5. 智能合约

  • The transactions are performed by smart contracts, which are programs automatically executed on blockchain networks when specific conditions are met
    • 智能合约的定义为:一段由事件驱动的、具有状态的、运行在一个复制的且分享的账本之上的、能够保管账本上资产的程序

智能合约是以太坊账户的一种类型。这意味着它们有一个余额,且可以成为交易的目标。然而,它们不是由用户控制的,相反,它们被部署到网络上并按程序运行。然后,用户账户可以通过提交执行智能合约上定义的功能的交易来与智能合约互动。智能合约可以定义规则,就像普通合约一样,并通过代码自动执行这些规则。智能合约默认不能被删除,与它们的互动是不可逆转的。

  • 相当于沙盒系统中一直再跑的守护程序,无法被杀掉,可以通过命令行与其交互执行

6. 智能合约语言

  • 以太坊提供了 2 种编程语言: Serpent和Solidity

6.1. Solidity

  • Solidity 是一种“面向合约”(或面向对象)的高级编程语言,它是专门为编写运行在 EVM 上的智能合约而设计的. 其语法接近 JavaScript,并且支持强类型、继承、库以及用户自定义类型

  • solidty vs javascript

    • 安全上新引入问题?

7. 安全性问题

7.1. 区块链的安全性问题

  • how is the ledger secured? How does the consensus process work? How are bad guys kept at bay?

7.2. 智能合约的安全性问题

Although smart contract programming in many ways resembles traditional programming, it raises important new security challenges. Contracts are “play-for-keeps”, since virtual currencies have real value. If you load money into a buggy smart contract, you will likely lose it. Further, smart contract programming requires an “economic thinking” perspective that traditional programmers may not have acquired. Contract must be written to ensure fairness even when counterparties may attempt to cheat in arbitrary ways that maximize their economic gain

  • 智能合约编程需要一种 “经济思维 “的观点,而传统的程序员可能没有掌握这种观点。合同的编写必须确保公平,即使对手方可能试图以任意的方式作弊,使其经济利益最大化。

8. 防范漏洞的方式

9. 参考

  • 区块链系统中智能合约技术综述
  • 智能合约的简单模型 | 理查德·詹德尔·布朗
  • Ethereum Homestead 中文文档 — Ethereum Homestead中文文档 0.1 文档
  • 以太坊开发文档 | ethereum.org
  • ethereum-evm-illustrated - ethereum_evm_illustrated.pdf
  • 比特币与以太坊的区别是什么? - 知乎
  • sec
  • Security
ESBMC增强:从递归到迭代
【外设】Doio Retro83键盘组装记录
  1. 1. 1. Web 1/2/3.0
  2. 2. 2. 区块链
    1. 2.1. 2.1. 区块链系统
    2. 2.2. 2.2. DAO
    3. 2.3. 2.3. 分布式账本的优势
    4. 2.4. 2.4. 吐槽
  3. 3. 3. 比特币
  4. 4. 4. 以太坊
    1. 4.1. 4.1. 以太坊虚拟机
  5. 5. 5. 智能合约
  6. 6. 6. 智能合约语言
    1. 6.1. 6.1. Solidity
  7. 7. 7. 安全性问题
    1. 7.1. 7.1. 区块链的安全性问题
    2. 7.2. 7.2. 智能合约的安全性问题
  8. 8. 8. 防范漏洞的方式
  9. 9. 9. 参考
© 2024 何决云 载入天数...