银行云

下载imtoken钱包app中国版 2023-02-13 05:50:44

比特币开创了去中心化加密货币的先河,五年多来充分检验了区块链技术的可行性和安全性。 比特币的区块链实际上是一组分布式数据库。 如果你给它加上一个符号——比特币,并规定一套协议,让这个符号可以在数据库上安全传输,而且你不需要信任第三方,这些特性的组合就完美地构建了一种货币传输系统——比特币网络。 然而,比特币作为加密货币的一次伟大尝试并不完美。 其中,协议的可扩展性是一个缺点。 例如,比特币网络中只有一种符号——比特币,用户无法自定义其他符号。 符号可以是代表公司的股票,也可以是债务凭证等,失去了一些功能。 此外,比特币协议使用一套基于堆栈的脚本语言。 虽然这种语言具有一定的灵活性,可以实现多重签名等功能,但还不足以构建去中心化交易所等更高级的应用。 等待。

以太坊旨在解决比特币可扩展性不足的问题。 一般来说,以太坊是一个提供各种模块供用户构建应用程序的平台。 如果说构建应用就像盖房子,那么以太坊提供了墙壁、屋顶、地板等模块,用户只需要像搭积木一样搭建房子,因此在以太坊上构建应用的成本和速度都得到了极大的提升。 具体来说,以太坊通过一套类似于汇编语言的图灵完备脚本语言(Ethereum Virtual Machine code,简称EVM语言)来构建应用。 我们知道直接用汇编语言编程是很痛苦的,但是以太坊程序中的编程不需要直接使用EVM语言,而是用C语言、Python、Lisp等高级语言,然后转换通过编译器将其转换为 EVM 语言。

比特币网络实际上是一组分布式数据库,而以太坊更进一步,它可以看作是一台分布式计算机:区块链是计算机的ROM,合约是程序,而以太坊的矿工是负责计算,充当CPU的角色。 这台电脑不是也不能免费使用,否则任何人都可以在里面存储各种垃圾信息,进行各种琐碎的计算。 白皮书称,使用它至少需要支付计算费用和存储费用。 还有其他费用。

以太坊是下一代智能合约和去中心化应用平台。

基本概念

公钥加密系统

每个用户都有一个公钥和一个私钥。 每个人都可以使用他的私钥创建数字签名,其他人可以使用他的公钥来验证签名确实是用他的私钥创建的。 当你创建一个以太坊或比特币账户时,长长的 0xdf...5f 地址本质上是一个公钥,对应的私钥存储在某个地方。 Coinbase 等在线钱包可以为您保管私钥,您也可以自己保管。 如果你丢失了持有资金的钱包的私钥,你将永远失去那笔资金,所以你最好备份你的私钥。

点对点网络

与 BitTorrent 一样,以太坊分布式网络中的所有节点都是平等的,没有中央服务器。 (未来会出现半中心化的混合服务,为用户和开发者提供便利,后面会讲到。)

区块链与比特币_区块链技术和比特币_在比特币中区块链是指

区块链

区块链就像一个全球唯一的账本,或者说数据库,记录着网络中所有的交易历史。 区块链整体上是一种专门为数据通信网络设计的数据库。 它可以保存任意数据,也可以设置更新信息的规则。 它的第一个特点是它可以通过前一个块的内容的散列在称为“块”的离散块中更新。 散列“链接”在一起。 区块链不仅包含当前存储在数据库中的信息,还包含数据库的每一次历史变化。 通过状态和交易,区块链构建了一个没有完整历史变化的数据库,无需更改每个后续块。 私钥总是签署“交易”或更改数据库状态的请求,并且签名也存储在区块链中。

以太坊虚拟机 (EVM)

它允许你在以太坊上编写更强大的程序(脚本程序也可以在比特币上编写)。 它有时也用于指代以太坊区块链,它负责执行智能合约和一切。

节点

你可以运行一个节点,通过它读写以太坊区块链,也就是使用以太坊虚拟机。 全节点需要下载整个区块链。 轻节点仍在开发中。

矿工

挖矿在比特币中区块链是指,即区块链上处理区块的节点。 您可以在此页面上看到一些当前活跃的以太坊矿工:。

区块链与比特币_区块链技术和比特币_在比特币中区块链是指

工作证明

矿工们总是在竞相解决一些数学问题。 第一个解决答案(计算下一个区块)的人将获得 5 个以太币作为奖励。 然后所有节点更新自己的区块链。 所有想要计算下一个区块的矿工都有动力跟上其他节点并维护同一条区块链,因此整个网络总能达成共识。 以太坊平均可以在 30 秒内产生一个区块(注:以太坊正计划转向没有矿工的权益证明系统 (POS),但这不在本文的讨论范围之内。)

以太坊

缩写为 ETH。 您可以购买并用于支付交易费用的真实数字货币。 在撰写本文时,1 ETH 价值 85 元人民币。 最近,由于 The DAO 项目,以太坊网络经历了一次硬分叉。 由于80%的算力支持,硬分叉成功,但部分矿工维护了旧链,旧链上的数字货币ETC出现在市场上。 下面是比较两个网络的计算能力。

气体

在以太坊上执行程序和保存数据都会消耗一定的Gas,Gas的数量是在智能合约完成时确定的。 公网上Gas的价格是20G Wei。 该机制用于确保效率。

去中心化应用

以太坊社区将基于智能合约的应用称为去中心化应用(Decentralized App)。 DApp 的目标是(或者应该是)为你的智能合约提供一个友好的界面,再加上一些额外的东西,比如 IPFS(可以存储和读取数据的去中心化网络,不是来自以太坊团队但有类似的精神)。 DApp 可以运行在可以与以太坊节点交互的中心化服务器上​​,也可以运行在任何以太坊对等节点上。 (花点时间想一想:与普通网站不同,DApps 不能在普通服务器上运行。它们需要向区块链提交交易并从区块链而不是中心化数据库中读取重要数据。相比于典型的用户登录系统,用户可能表示为钱包地址,其他用户数据存储在本地。许多事情将与当前的 Web 应用程序架构不同。)

区块链技术和比特币_在比特币中区块链是指_区块链与比特币

以太坊客户端,智能合约语言

智能合约编写

智能合约是代码和数据的集合,存储在区块链的特定地址中。 智能合约更像是区块链中的自动化代理(或机器人或 NPC)。 智能合约有自己的账户,可以自动执行一些由时间或事件驱动的功能,比如相互之间传递信息。 ,修改区块链的状态(账户信息等),以及图灵完备的计算(图灵机能做的一切,通俗点说就是通用编程语言能做的一切)。 以太坊的智能合约是以太坊特有的字节码,称为 EVM 字节码。

开发过程

开发环境

集成开发环境

以太坊官方出品了编写智能合约的Mix IDE,可以在ubuntu上通过

sudo add-apt-repository ppa:ethereum/ethereum sudo apt-getupdate sudo apt-getinstall mix-ide

在比特币中区块链是指_区块链技术和比特币_区块链与比特币

安装。 其主要功能如下:

可以进行合约开发和测试,可以标记每行代码消耗的Gas,二进制级别的代码调试。 用户无需关心区块链节点的搭建,Mix内置测试节点用于合约调试。 编写智能合约的调用场景(Scenario),每个场景都可以进行测试,场景可以直接部署到区块链上。

松露框架

Truffle 是一个非常传统的测试驱动开发框架。 测试语言为javascript,使用javascript Promise异步调用方式,因为智能合约的每笔交易都需要写入区块,响应时间比较长。 对Nodejs有一定了解的人上手非常容易。

npm 安装-g trufflenpm 安装-g ethereumjs-testrpc

使用 truffle 部署智能合约的步骤:

1. truffle init (在一个新目录中) => 创建一个truffle项目目录结构

2. 编写合约代码,保存到contracts/YourContractName.sol文件中。

在比特币中区块链是指_区块链技术和比特币_区块链与比特币

3. 将合约名称添加到 config/app.json 的“contracts”部分。

4. 启动以太坊节点(例如在比特币中区块链是指,在另一个终端运行testrpc)。

5. truffle deploy(在truffle项目目录下)

开发过程中可以使用truffle compile命令确认你的合约可以正常编译(或者使用solc YourContract.sol),truffle deploy编译部署合约,最后truffle test运行合约的测试用例智能合约。

注意:在开发过程中,如果修改了合约,必须重新编译部署,否则会出现莫名其妙的问题。

这里有一个会议示例,可以参考合约和测试用例的编写方法,具体的Solidity语法可以参考官方文档。

积分联盟智能合约

问题描述

最终结果:用户u的ua_account中值减小,ub_account中值增大。 同时,在合约C上,A账户的c_score增加,B账户的c_score减少。 用户实现积分兑换流程,C合约保存A、B商户余额,用于线下结算。 由于所有交易均可追溯,C平台无法造假,实现价值流通。