摘要:
一个 Solidity 源文件可以包含任意数量的合约定义、import指令和pragma指令。 让我们从一个简单的 Solidity 源程序开始。下面是一个 Solidity 源文件的例子: pragma solidity >=0.4.0 <0.6.0; contract SimpleStorage 阅读全文
摘要:
在线开发环境Remix(推荐) 学习Solidity推荐使用在线开发环境Remix,本教程的例子将使用Remix开发运行。 安装本地编译器 安装 nodejs / npm node官方网站下载node,推荐LTS版本,按提示完成安装,npm会同时装上。 验证Node版本: Kevin@QIKEGU 阅读全文
摘要:
Solidity语言是一种面向合约的高级编程语言,用于在以太坊区块链网络上实现智能合约。Solidity语言深受c++、Python和JavaScript的影响,针对以太坊(Ethereum)虚拟机(EVM)设计。 Solidity语言是静态类型语言,支持继承、库和复杂的用户定义类型。 可以使用So 阅读全文
摘要:
智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethereum) – 智能合约开发概述 支持智能合约的区块链 虽然以太坊(Ethereum)是最流行支持智 阅读全文
摘要:
以太坊(Ethereum)与其他公共区块链一样,使用工作量证明机制确保区块链网络正常运行。 矿工进行工作量证明计算,即挖矿,来选择区块,写入区块链,确认交易。 交易过程如下图所示: 从技术角度来看,以太坊使用的工作量证明算法称为Ethash,这是一种哈希算法,灵感来自Dagger-Hashimoto 阅读全文
摘要:
以太币的主要单位是以太/Ether,即一个以太币,以太币的最小单位是wei。 以太币最小单位 wei 是以虚拟币先驱人物:戴伟 Wei Dai 命名,戴伟 W Dai 是一位兴趣广泛的密码学专家,他在 1998 年发明了 B-money 匿名的、分布式的电子加密货币系统,强调点对点的交易和不可更改的 阅读全文
摘要:
用途: 全节点:用于区块和交易的校验 轻节点:电子钱包 以太坊(Ethereum)网络是一个公共的区块链网络,网络中包含2种网络节点: 全节点 轻节点 全节点 包含了从初始区块开始的全部区块,这些区块中包含了所有的交易历史记录,这些信息是区块链完整性的证据,可用于区块和交易的校验。通常矿工节点应该是 阅读全文
摘要:
以太坊(Ethereum)网络中,定义了一组通用协议用于支持智能合约的运行,其核心便是以太坊(Ethereum)虚拟机。 下图解释了该架构: 开发人员使用Solidity等开发语言开发智能合约 源程序被编译成以太坊虚拟机支持的字节码可执行程序 可执行程序被部署到网络中,即写入区块,并被分配一个账号( 阅读全文
摘要:
作用: 外部账号 – 用户使用的账号,账户余额。 合约账号 – 智能合约使用的账号,每个智能合约都有一个账号,内存和账户余额 以太坊(Ethereum)网络中,有2种账号: 外部账号 – 用户使用的账号 合约账号 – 智能合约使用的账号,每个智能合约都有一个账号 这些账号,都被称为状态对象/stat 阅读全文
摘要:
作用:用户交互 分布式应用(DApp)是运行在区块链之上的应用程序,支持区块链网络中用户之间的交互。 DApp(decentralized application)的后端代码运行在区块链网络上,这个可以与普通互联网应用比较一下,普通互联网应用的后端代码运行在集中式的服务器上。 DApp可以使用任何语 阅读全文
摘要:
作用:执行智能合约代码的引擎 以太坊(Ethereum)虚拟机是执行智能合约代码的引擎。 可以用某种语言,例如Solidity语言,开发智能合约程序,编译成以太坊(Ethereum)虚拟机支持的字节码/bytecode,然后该程序就可以在虚拟机中执行了。 以太坊(Ethereum)虚拟机可以被看做是 阅读全文
摘要:
以太币的作用:防范以太坊网络被滥用和激励矿工。 与比特币网络有比特币类似,以太坊(Ethereum)也有自己的虚拟币 — 以太币。 以太币的主要作用有2个: 应用程序执行任何操作都需要支付以太币,防范以太坊网络被滥用。 与比特币类似,用于激励矿工。 每次执行智能合约时,都需要消耗“汽油/gas”,即 阅读全文
摘要:
作用:提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。 以太坊网络基石:以太坊虚拟币和智能合约。 智能合约(Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于199 阅读全文
摘要:
以太坊的作用:构建基于区块链的分布式应用。 以太坊是什么:可编程的虚拟币。 以太坊(Ethereum)是一个可编程的虚拟币,它是一个基于公共区块链的分布式计算平台,可用于构建基于区块链的分布式应用。 在以太坊(Ethereum)出现之前,各种区块链应用的功能非常有限,例如,比特币和其他加密货币都只是 阅读全文
摘要:
接下来讨论比特币系统中,三种不同类型的可能攻击 竞态攻击 比特币交易,需要被写入区块链才有效。作为一个攻击者,你可以把相同的比特币发给不同的卖家,可能需要使用2台不同的机器。如果卖家没有等到付款被确认,就发货了,卖家就拿不到付款。防范这种攻击的方法是,卖家至少要等待一个块的确认后才发货,2个卖家都等 阅读全文
摘要:
如何保护用户隐私:将区块链匿名。 为什么需要保护用户隐私:区块链的账本是公开的。 区块链是一个公开的账本,为了保护用户隐私,区块链是匿名的,否则世界上任何人都能知道谁有多少钱,谁付钱给谁了。而传统的银行系统是通过对其记录保密来维护这种隐私。 区块链中的账号用一个用户的公钥表示,这个公钥是匿名的,区块 阅读全文
摘要:
冲突产生的原因:多个不同的矿工同时完成了工作证明,随之生成的新区块添加到链中,导致区块链分叉。 如何解决冲突:最长的分支会被保留,较短的分支则被废除 比特币网络中,包含了多个矿工。有一种情况是可能的,2个不同的矿工同时完成了工作证明,同时将新区块添加到链中,区块链分叉了。如下图所示: 现在,在Blo 阅读全文
摘要:
作为收款方,会想确认一笔交易有没有被写入区块链。 由于本地节点(钱包)的区块链,只包含了区块链头,没有交易信息,这笔交易在本地是找不到的。 但是,区块链是一个网络,你可以向包含全部区块信息的节点(例如矿工节点)发请求(GetData),查找指定的交易,找到对应的区块,获取默克尔树。如下图所示 如上图 阅读全文
摘要:
目的:解决由于区块链过长,导致节点硬盘存不下的问题。 方法:只需保留交易的哈希值。 区块链作为分布式账本,原则上网络中的每个节点都应包含整个区块链中全部区块,随着区块链越来越长,节点的硬盘有可能放不下。区块链中引入了默克尔树解决这个问题。 区块链中,为节省空间,只保存交易的哈希值,不保存交易本身的信 阅读全文
摘要:
目的:解决量大,效率低下做出区块大小限制的问题 一个矿工短时间内有可能会接收到大量交易,导致处理不过来,所以必须对区块大小作出限制。区块大小的上限,已经在系统中预先定义,所以区块中只能包含一定数量的交易。 一个区块中的交易数,由预定义的块大小和每个块的平均长度决定。这表明,发送者应该使消息尽量简短, 阅读全文