区块链Dapps Coursera(第四周)应用模型和标准

课程链接 https://www.coursera.org/learn/decentralized-apps-on-blockchain/home/week/4
为自己学习记的笔记,翻译可能存在问题,望谅解。

应用模型和标准 Application Models & Standards

目录

Dapp 模型 Dapp Models

Application Models & Standards: Dapp Models (Part 1)

Dapp Models (Part 2)

Dapp 标准 Dapp Standards

Dapp Standards (Part 1)

Dapp Standards (Part 2)

Dapp课程资源、参考资料和主要内容总结

Week One: Decentralized Applications (Dapps)

Week Two: Truffle Development Environment

Week Three: Improving the Smart Contract Design

Week Four: Application Models and Standards


Dapp 模型 Dapp Models

Application Models & Standards: Dapp Models (Part 1)

在本课程中,我们学到了很多有关开发端到端Dapp的知识。 您是否想知道Dapps可以解决什么问题? 有哪些用例? 我们可以在https://www.stateofthedapps.com 中找到许多基于以太坊的Dapp的当前示例

我们在Dapp课程的开放式模块中的目的是探索Dapp及其生态系统的一些模型。 在开发Dapp以及为协议改进和构想新的Dapp模型做出贡献方面,仍需完成工作。
学习目标:
1)能够列出Dapp的不同应用程序模型。
2)解释以太坊改进建议 Ethereum improvement proposal (EIP)和以太坊请求注释框架 Ethereum requests for Comments frameworks.
3)解释分散式系统中标准的重要性
4)探索两个标准标记:ERC 20和ERC721。

区块链Dapps Coursera(第四周)应用模型和标准_第1张图片

我们将在Dapp模型上以层次结构图开始本课程,该层次结构图从比特币的起源开始提供各种Dapp模型的高级视图。在本课程中,我们将复习每个模型。 我们承认还有许多其他未包含在内,该图并不是完整的。我们鼓励您向该图中添加其他模型。 在本课程之后,您将能够列出Dapp的一些重要模型,并解释Dapp模型从加密货币到加密资产的演变。
区块链Dapps Coursera(第四周)应用模型和标准_第2张图片

让我们依次描述每个模型:

比特币是纯加密货币。 除了从Satoshi到Hal Finney的创始交易外,每个比特币都由协议发行。 尽管面临可扩展性和价格波动的问题,但比特币的创新是仍在运行的去中心化支付系统。

Ethereum 智能合约的创新。 它使用名为 Koine 的虚拟工具和初始代币发行过程帮助自动为初创企业提供了众筹资金。 这类似于公司股票的首次公开募股 IPO。Coin ICO使用一个区块链来记录货币的分配、接收资金 receive funds、指定的规则 specified rules,并强制执行任何前提条件 preconditions和政策。 在Dapp层次结构中,我们仅将Dapps,以太坊和Zcash包括在内。但是,有数百种 ICO 和货币产品。 它已成为众筹的一种流行模式。 您知道 Zcash 高度关注隐私并使用封闭代码吗? 我们对通过 Dapps 货币中的 ICO 筹集资金的任何加密货币进行分类。以太坊和Zcash都使用ICO流程获得了初始资金。 这就是将以太坊和Zcash归类于此类别的原因。

我们将要讨论的下一个Dapp是代币 Token 和 initial token offering。有时候,token 和 coin 是同义词,但是,我们在模型中区分了这些。代币就像 Dapp coin,但其产品通常与资产或公用事业相关。 例如,在高度流行的 cryptoKitties 中,使用代币来表示 小猫 ,或者将创建生命周期,繁殖等所有规则写入不可变的以太坊区块链智能合约中。在预定的时间,将发行一定数量的新代币并进行拍卖以筹集新资金。 在这种情况下,资产就是小猫,也可以根据需求升值或贬值。 因此,代币 是不可替代的。 换句话说,代币 的价值可以在其生命周期内改变。
区块链Dapps Coursera(第四周)应用模型和标准_第3张图片 区块链Dapps Coursera(第四周)应用模型和标准_第4张图片区块链Dapps Coursera(第四周)应用模型和标准_第5张图片

Auger 是一种预测 Dapp,它取决于人群的智慧以及他们关于产品声誉的报告来预测市场。 这些分散的参与者或人群将获得 REP tokens 或 reputation tokens 的报酬。根据人群报告,这些 token 代表交易执行后收取的费用的一小部分。 有很多的代币 Dapp在起作用,但我们只介绍了两个。在层次结构图中,您还将注意到 Auger 和 cryptoKitties 都分别继承自标准代币 ERC 20 和 ERC 721。 在下一课中将对此进行更多介绍。

DAO,Decentralized Autonomous Organization 是Dapp的早期创新。 DAO是一种部署为以太坊区块链上的智能合约的投资工具 investment instrument。确切地说,自主风险投资 Autonomous venture capital Dapp。 这个想法是要展示一个没有传统公司治理结构的自治组织,以进行分散式匿名筹款和自动投资。DAO 的部署过早,没有进行广泛的测试。 但是这个想法本身就很受欢迎,DAO 筹集了超出预期的资金。但是,该代码中的漏洞已被黑客利用。 这导致了所收集资金的很大一部分的数字抢劫。 您可以在资源部分的《The Ether Thief》阅读更多内容。这次 DAO 抢劫 heist 以及解决它的解决方案,在2016年7月导致了意想不到的以太坊的硬分叉。当我们现在使用ETC时,这个硬分叉将以太坊拆分为ETH (以太坊core),和仍然有漏洞的 ETC (以太坊 classic)  。 尽管进行了负面宣传,但我们认为,如果做对了,DAO 的确是一个创新的Dapp。
区块链Dapps Coursera(第四周)应用模型和标准_第6张图片

Dapp Models (Part 2)

下一个Dapp模式是去中心化市场  decentralized marketplace。它的定义很广泛,它可以是从销售商品到教育证书的任何 Dapp。 请记住,市场 marketplace 可以促进买卖双方的会面。 您可以构建一个市场平台,去中心化的买家和卖家彼此之间不认识的那些买家可以通过记录在任何已建立的区块链技术(例如比特币或以太坊)上的付款和交易来见面和交换商品。 您始终可以将比特币用作您所建立的全球市场的支付系统。

是否有支持买卖的智能合约代码? 有。一个示例是 solidity 文档中 purchase.sol 中的 安全远程购买 智能合约 safe remote purchase smart contract。

FinTech 金融技术 financial technology,是另外一个需要讨论的 Dapp。对于创新 Dapps 具有巨大的潜力。这个领域的范围从分散的投资工具到小额支付渠道。当前,对于 FinTech Dapps 来说,一个重要的问题是与集中式技术相比,交易的确认时间高。在进行记录时,Dapps无法满足集中式系统可以交付用于股票交易的亚秒级交易确认时间。在这种情况下,可伸缩性 scalability 是一个主要问题。 隐私 Privacy 是在这种情况下要考虑的另一个问题。 美国证券交易委员会(SEC)和许多国家/地区的对口机构的法规和政策对 FinTech Dapps 及其发展产生影响。 安全,隐私,安全和欺诈预防 fraud prevention 是主要问题。

实际上,代币 tokens,货币 coin 和 ICO Dapps 为许多投资者和金融机构提供了进入加密货币市场的入口。 

在互联网出现30年后,Uber和AirBnB共享应用程序应运而生。您可以将讨论的Dapp模型用作启发和指导,以为您的应用程序域创建Dapp。

阅读材料
What is An Initial Coin Offering? Raising Millions In Seconds
The Ether Thief

测试题

区块链Dapps Coursera(第四周)应用模型和标准_第7张图片

Dapp 标准 Dapp Standards

Dapp Standards (Part 1)

学习目标:
学完本课程后,您将能够解释标准对 DApps 的重要性,并解释 ERC20 和 ERC721 代币的重要性。

以太坊如何实现标准。
EIP是一种在以太坊生态系统中改进流程的方法。 EIP或以太坊改进提案是一种管理协议规范,改进,更新,客户端 API 和合同标准的方法。EIP处理四个不同类别的问题,包括: 核心或核心以太坊协议,网络或网络级别的改进,接口或诸如ABI和RPC,ERC或应用程序级别的约定和标准的接口。
区块链Dapps Coursera(第四周)应用模型和标准_第8张图片

在本课程中,我们仅对两个ERC(ERC20 和 ERC721标准)感兴趣。

什么是ERC?
ERC (Request for Comments)是以太坊的注释请求 ,就像 Internet 的 RFC 一样。 针对应用程序级别问题的 ERC 提案proposal获得了提案ID,例如,ERC20,ERC721等。解决方案草案由ERC文件提出,并在社区中进行了讨论。ERC 可在 GitHub上获得,并在 guitar 和 subreddits 上进行了讨论。
结果可以被接受 accepted,拒绝 rejected,撤回 withdrawn 或推迟 deferred 。 一个 accepted ERC 已完成,并分配了一个EIP编号,并由该协议实施。我们将讨论在DApp运行中引起轰动的许多ERC中的两个,即ERC20和ERC721。

让我们考虑货币coins 和代币 tokens。以前,任何人都可以发行货币和代币,没有任何标准。 在上一课中,我们研究了 coin 智能合约的代码。 我们可以轻松发行任意数量的数字货币,并将货币从一个帐户转移到另一个帐户。您体验了自己发行硬币并进行交易有多么容易。 您可以给硬币起个花哨的名字,然后将其部署在以太坊主链上,然后将这种数字货币发行给整个去中心化的世界进行购买。拥有互联网连接的任何人都可以使用您的硬币进行连接和交易。 在这种情况下,让我们考虑以下问题。
区块链Dapps Coursera(第四周)应用模型和标准_第9张图片

在标准ERC20和ERC721中解决了这些以及许多问题。 ERC20被指定为智能合约接口。 它指定了一组规则,这些规则允许令牌DApp彼此交互以相互交换,并在以太坊网络上进行交易。 
区块链Dapps Coursera(第四周)应用模型和标准_第10张图片

使用此接口,您如何使代币 ERC20 兼容? 当然,您必须实现 ERC 接口所需的功能。
区块链Dapps Coursera(第四周)应用模型和标准_第11张图片

回想一下我们在最后一个模块中对接口的讨论。 您可以列出一些符合ERC的令牌吗? Augur REP,我们之前讨论的rep是ERC20代币。 这是一些ERC20代币。
区块链Dapps Coursera(第四周)应用模型和标准_第12张图片

Dapp Standards (Part 2)

ERC 20是可替代代币 fungible token。词典中可替代词的定义是,能够替换或被另一个相同的项替换,彼此可互换。一张普通美元钞票的价值等于任何其他普通美元钞票。 一个比特币的价值等于任何其他比特币。 一个以太币等于任何其他以太币。这是可替代的概念。该代币的值是固有的。 现在考虑由一个小狗代币A标识的小狗A,小狗代币B标识的小狗B。Puppy Token A的价值不等于Puppy Token B的价值。它们不能一对一交换。 这是不可替代的概念。 考虑另一个例子。 比较普通便士和收藏品便士。从物理上来说,它们是一个代币,或者每个硬币一美分,但是它们的值并不相同。在这些情况下以及许多更实际的示例中,给定的代币值可能会因许多因素而升值或贬值。这最终导致了所谓的不可替代代币 non-fungible token ,即无法一对一交换的令牌。 ERC 721 是不可替代的令牌标准。 不可替代的代币概念由 CryptoKitties DApp提出。

CryptoKitties是一个符合以太坊ERC-721的工具。 它的广泛流行,使许多人接触到加密世界。当然,因为它符合以太坊721令牌,所以它搭载在以太坊区块链上。曾经有一段时间,它造成了30%的流量以及以太坊主要净流量的阻塞,积压了30,000笔交易。该DApp被誉为许多领域的创新,包括但不限于加密游戏和加密收藏品。更重要的是,ERC-721的创新在于证明令牌的固定值在许多实际情况下可能不成立。在这方面,ERC-721标准具有超越数字猫和收藏品的巨大潜力。 它为DApps开辟了一个全新的应用领域。 ERC 721只是即将出现的更多标准的开始。ERC代币正在对身份 identity,治理 governance 和安全性 security 提出标准。这些以太坊的代币和EIP一定会将Dapp生态系统转变为主流应用程序框架,并且将分散化为规范。

总而言之,我们讨论了以太坊改进提案和ERC过程,这对于保持以太坊区块链的更新至关重要。我们还探讨了可替代令牌的标准ERC-20和不可替代令牌的ERC-721。 让我们总结一下整个课程。

1)我们使用有关诸如区块链服务器,Dapp架构以及支持API的细节之类的基本概念的模块来开设课程。
2)我们亲自使用 Truffle IDE 实践了 Dapp 实用,增量,端到端开发。
3)然后,我们探索了重要的针对智能合约的最佳实践,以改善Dapp的基本设计。 我们以将新兴技术转变为更成熟技术必不可少的标准结束了本课程。
区块链Dapps Coursera(第四周)应用模型和标准_第13张图片

阅读材料
The difference between App Coins and Protocol Tokens
If you don't understand blockchain, maybe these cats can explain it to you
ERC 20 Token Standard
ERC 721 Token Standard
EIP Ethereum Improvement Proposal

测试题
区块链Dapps Coursera(第四周)应用模型和标准_第14张图片
区块链Dapps Coursera(第四周)应用模型和标准_第15张图片
区块链Dapps Coursera(第四周)应用模型和标准_第16张图片
区块链Dapps Coursera(第四周)应用模型和标准_第17张图片

Dapp课程资源、参考资料和主要内容总结

Decentralized Applications (Dapps): Resources, References and Key Takeaways

Week One: Decentralized Applications (Dapps)

Dapp(decentralized application)去中心化应用程序 解决了需要区块链服务和区块链基础设施来实现其目的的问题。

Blockchain server 代表区块链提供的基础设施和功能。

API (Application Programming Interface )是公开与特定数据集和服务相关的一组功能的便捷且标准的方法。

API发布了一组功能或方法,可通过编程使用这些功能或方法来调用操作,访问数据和存储数据。API的两个著名示例是:
-Twitter API访问可按查询条件过滤的推文
-Google Maps API,允许应用程序在自己的应用程序中“嵌入”地图功能,例如地理定位,从而充分利用和重用google map API的功能。

API有两大类:
-第一个用于管理API,包括admin,debug,miner,personal和txpool。 它们支持管理geth节点的方法。
-第二个是Web3 API:web3,eth和net。 他们支持Dapps的开发方法。

Week Two: Truffle Development Environment

应用常规设计过程需要五个步骤:
- Step 1: 设计 Ballot.sol;
- Step 2:使用修饰符 “ onlyOwner”来修饰修饰语,将合格人员称为主席。 回想一下,在智能合约的设计中,您可以使用修饰符来表示全局规则 global rules.。
- Step 3:为所需的问题说明添加测试人员代码,然后运行测试以确保它们全部通过。
- Step 4:添加用户界面组件
- Step 5:通过与界面进行交互来测试完整的应用程序。

基本 truffle 命令:
- Truffle Init :初始化Dapp的模板或基本目录结构
- Truffle compile :智能合约编译
- Truffle develop :用于通过控制台进行测试的个人区块链
- Truffle migrate :用于部署智能合约的迁移脚本
- Truffle test :用于测试已部署合同的测试环境

Metamask将链接到由Truffle创建的本地区块链来管理帐户,充当应用程序前端与托管帐户的区块链节点之间的桥梁。

Node.js将用作Dapp前端的Web服务器

智能合约就像您的硬件芯片。 一旦部署,它们将是最终的,除非内置特殊规定或逃生舱口 escape hatches ,否则它们将无法更新。

正面测试-确保对于给定的有效输入,其性能符合预期。 我们将测试 deploy-register-vote-winningProposal 的完整投票周期
负面测试-确保它能正确处理无效输入或情况。 我们将仅对许多负面测试中的2个进行编码。

test.js 有4个正面测试和2个负面测试。

正面测试中的 Asserts 具有三个参数:期望值expected value  ,实际值 actual value,代表正在执行的测试的字符串 a string representing the test being performed 。

Contracts 有 Solidity 合约
Migrations 具有迁移脚本
Test 有测试脚本
Build 具有由编译过程生成的json工件
Src 具有js,css,index.html等网络资产
Node_modules 具有node.js模块
json 文件和 js 文件是配置文件

Week Three: Improving the Smart Contract Design

Memory 是RAM中的瞬态内存 is transient memory in RAM
Storage 是指永久存储设备(如硬盘驱动器)中的永久存储。
Solidity 提供了一个称为 “ selfdestruct ” 的函数来删除或取消智能合约。
Libraries 是特殊的智能合约,没有以太币余额,没有应付款功能,也没有要存储在区块链上的状态。

智能合约所有权可能会更改或删除

Coin sc 有两个数据项。
-第一个是 minter 或 owner 的地址;
-第二个是帐户地址和COIN余额之间的映射

Coin 具有 mint 函数,只有 minter 才能执行给给定地址发行新货币。 您必须是Metamask帐户中的Account1或minter帐户中的minter 。
Coin 具有 transfer 函数,可以将货币从一个帐户转移到另一个帐户。 您必须在Metamask中使用发件人的帐户才能进行转移。

复杂的应用程序可能由许多智能合约组成。 一个实例化另一个或继承另一个。

transfer 函数可用于实现智能合约所有权的转移。

Oraclize被描述为Web资源(API和URL)和智能合约之间的数据载体。

usingOraclize是一个智能合约,提供最少的查询功能以访问外部资源。

Week Four: Application Models and Standards

Initial Coin Offering (ICO) 使用区块链记录货币的分配,接收资金,指定规则并执行任何前提条件和政策。

Token 与 Dapp Coin类似,但其产品通常与资产或公用事业相关。

去中心化自治组织(DAO)Decentralized Autonomous Organization 是作为智能合约部署在以太坊区块链上的投资工具,其主要目标是展示无传统公司治理结构的自治组织,以进行去中心化,匿名筹款和自动投资。

Decentralized Marketplace 分散市场 促进了买卖双方的会面。

金融科技(Fintech)是金融技术的缩写,在创新Dapps方面具有巨大潜力,其Dapps的领域从分散式投资工具到小额支付渠道。

EIP(Ethereum Improvement Proposal)是一种管理协议规范,改进,更新,客户端API和合同标准的方法。

EIP处理四个不同类别的问题,包括:
- 核心或核心以太坊协议 Core or core ethereum protocol
- 网络或网络级别的改进 Network or network level improvement
- 接口,例如ABI,RPC  Interface or Interfaces such as ABI, RPC 
- ERC或应用程序级别的约定和标准

Ethereum Request for Comments (ERC)是ERC文档提出的解决方案草案,并在github,gitter和sub-reddits社区上进行了讨论。

 

你可能感兴趣的:(区块链学习笔记)