Ethereum Devcon3 浓缩精华版 - 钱包与 Dapp 开发

1,411 阅读7分钟

Ethereum Devcon3 于11月1日至11月4日在墨西哥坎昆举行,此次参会人数 1800 余人,相比去年在上海举办的 Devcon2 增长一倍(2014年的 Devcon0 仅50人参与)。今年的演讲主题也有约 128 场之多,覆盖 Casper, Formal Verification, Smart Contract, zkSNARKs, Whisper, Swarm, Wallet, Dapp development 等重要主题。

此次 Devcon3 参会人数之多,出现不少来自世界各地的华人面孔,其中就包括来自中国杭州的区块链团队 imToken、Ethfans、Cryptape。同时 imToken 与 Ethfans 作为大会赞助商参与其中,Cryptape 的 CEO 谢晗剑也给大家带来「A Fast and Scalable Blockchain for Enterprise Users」的演讲。

Ethereum Devcon3 涉及主题众多,无法亲身观看所有的演讲,所以我主要介绍 Wallet 和 Dapp development 相关主题,另外我的同事 Sun 和 Kai 会介绍 Smart Contract 开发与安全。

如果你对此次会议更多详情感兴趣,可以选择观看官方录制的视频,包含四天会议里所有的演讲。


主题:Ethereum in 25 Minutes, Version MMXVII

Vitalik 常年在世界各地会议都会演讲的经典内容,主要涉及 Ethereum 全面的基础概念与未来发展:

1. 创造 Ethereum 的初衷,希望 Blockchain 可以像手机操作系统一样,当你想构建应用时不必重复创造和维护区块链,直接使用以太坊即可。

2. 图灵完备,可以完成像投票、ENS 等业务逻辑

3. 交易可以发送以太币,也可以读写存储,或者调用其他合约

4. 在以太坊上执行不同指令,需要消耗相应的 gas 来避免死循环的攻击

5. 智能合约 (DNS 作为例子)

6. 你可以使用 Solidity, Viper 等高级语言编写智能合约,通过 ABI 来描述合约可使用的方法

7. Byzantium 为 Ring signatures, ZK-SNARKS 作验证准备,同时加入 assert(), revert(), require() 方法

8. 未来的方向: Casper, Sharding, EVM 和协议升级

从版本号 MMXVII 可以看出,Vitalik 为了向入门者布道 Ethereum 花费了不少功夫

主题:Designing Maximally Verifying Light Clients and Sharding

1. Vitalik 提出区块链的三难问题(去中心化、扩展性、安全),仅能解决其二

2. 节点需要存储区块链上的所有状态,需要昂贵的存储和处理成本,而且随系统扩展而递增

3. 为了解决扩展性,Vitalik 提出 Sharding 方案 「一个区块链,两套系统」

4. Sharding 具体方案:将以太坊网络状态分解为众多分片 (shard),分片间仅能异步通讯,每一个分片仅处理全网络的一部分交易。分片也分为Main shard 与 New Shards,Vitalik 称 New Shards 为宇宙星系。

5. Main shard 与 New Shards 在共识与治理上会有不同处理方式,对于 Main shard 采取保守的方式,保障网络稳定性,对于 New Shards 采取积极改进的方式,以便进行更多的试验,但不影响 Main shard。

6. 为了解决节点更快同步网络状态,Vitalik 提出 Stateless Clients 方案

7. Stateless Clients 具体方案:共识节点不需要存储所有网络状态,仅存储区块头部信息即可。另外发送交易时,提交 Merkle branches 即可以改变状态。

最后,Vitalik 说 "Basically we’re just inches away from a proof of concept in python."

主题:Status – Ethereum at the edges of the Network

1. 团队成员从 11 人增长至 40 余人

2. 新任 COO,来自 Google 的 Nabil Naghdy,曾负责 Google Maps 和 Google Flights

3. 启动 Status Open Bounty 项目,提供 100 万美元赏金

4. 发布 Status Hardwallet,开源,离线,NFC等特点保障易用和安全,目前测试邀请阶段

5. 发布桌面版 Status,支持 MacOS, Linux, Windows

Status 在会议前,发布 twitter 说将会在 Devcon3 有 Big News 公布,演讲结束后,大家心想:说好的 Big News 呢???

主题:Mist: towards a decentralized, secure architecture

1. 下载量 260万

2. 通过 Cure53 进行安全审计,发现 22 个安全相关的问题,已经进行修复和测试保护

3. 支持 Swarm 上传文件

4. 支持 Light Client,更小的同步区块,更快的同步时间

5. 内置 Remix IDE 方便调试

6. 支持第三方节点切换,比如 Infura

7. 发布 MOON 项目,保障 Dapp 依赖模块的安全,轻量,性能

Mist 除了卡顿,或偶尔崩溃,都挺好的 ( smile

主题:MetaMask: Dissecting the fox

1. 20 万用户

2. 团队成员从 4 人增长至 10 人

3. 使用 Metamask 流量前 3 的项目分别为:EtherDelta, OasisDEX, ENS

4. 支持 HD Wallet

5. V4 将会有新的产品设计

6. 更简单的 Metamask 脚本注入,仅仅 4 行代码

7. 支持网页版钱包 MetaMascara Alpha

imToken 目前也在致力于提供 Dapp 开发者一套易用、规范的 SDK

主题:Exploring The Ethereum Blockchain With Etherscan

1. 2015年8月启动 Etherscan,2016年获得风险投资

2. 100 万月活用户、1800 万 PV、9 亿 月 API 调用

3. 当前 Ethereum 包含 440万 区块、7100万 笔交易、3750 万 笔合约内部交易、1万 ERC-20 Token

4. 用户地理位置分布:美国 20%,中国 9%,俄罗斯 6%,韩国 4.5 %,德国 4.4%

5. 用户年龄分布: 50% 为 25 岁 - 34 岁用户

6. 用户性别分布:92 % 为男性用户,8% 为女性用户

7. 用户行业分布:IT 与金融

8. 用户浏览设备分布:桌面端 66.3%,移动端 30.5%

其中 Android Webview 与 Safari (in-app) 占 9%,想必不少是来自 imToken 用户

主题:Towards a Permanent ENS Registrar

1. 180,822 个 ENS 域名被拍卖

2. 168,595 ETH 被抵押在 ENS 合约中

3. 50% 的域名被 1.4% 的钱包地址占有

4. 17,500 个 ENS 域名被一个地址拥有

5. 拍卖域名价格的中位数分别位 0.05 ETH (常用域名) 和 0.02 ETH (随机域名)

6. 8,553 ETH 被丢失,由于用户操作失误或没及时揭标

7. 35% 的域名产生一个以上的竞拍

8. Nick Johnson 提出使用租用域名方案替代当前的押金方案

9. Rolling Auctions 方案,减少竞拍操作步骤

imToken 也会随 ENS 进一步更新,对 ENS Dapp 升级

主题:ERC Identity

1. Vogelsteller 首先解释什么是 Identity,现实世界中的身份证就是你的 Identity,Identity 由姓名、头像、出生年月、身份证号码等信息组成。但是你需要不断的提供这些信息给银行、信贷、交易所等机构,去证明你是谁,你是你。

2. ERC-725 与 ERC-735 提案就是为了解决区块链上身份认证标准化,不再需要重复提交你的身份信息,仅需要在信任的 issuer contract 登记你的 claim(身份信息)即可。这样第三方的 Dapp 就可以向信任 issuer contract 检查和验证你的身份。

3. 为什么需要标准化?有利于第三方 Dapp 和 issuer contract 通过标准规范的方式管理 Identity。Vogelsteller 顺便吐槽一下,由于 ERC-20 标准的存在,导致疯狂的 ICO 代币的产生 ( 怪我咯 ???

4. ERC Identity 由 Keys, Execution, Claims 三部分组成

5. 最后 Vogelsteller 展示用例,当你在一家银行 Dapp 开户时,你不必提供身份信息,银行 Dapp 会通过你的地址向信任的 issuer contract 调用 `getClaim()` 寻找需要的身份信息, 并验证该签名 `keccak256(address this_identities_address + uint256 _claimType + bytes data)` , 若该签名仍然存在 issuer contract,则完成开户。

Claim 是对被验证主体特征的一种表述,比如姓名,出生年月等,一组 claims 构成了一个 identity,一个人可以持有多个 identity,比如身份证和护照,亦或你的 imToken 钱包

主题:Web3.js 1.0

1. 代码经过大规模重构

2. 支持 Promise

3. 支持 Subscriptions 基于 WebSocket 和 IPC socket

4. `Web3.eth.account` 支持钱包创建,导入导出,签名

5. `Web3.bzz` 支持 Swarm 文件上传和下载

6. `Web3.shh` 支持 Whipser 通讯

7. `Web3.utils.soliditySha3` 使用与 Solidity 同样的 hash 方法

使用过 Web3.js 开发 Dapp 的朋友会知道支持 Promise 和 Subscriptions 多重要!

最后,给大家送上墨西哥坎昆的阳光沙滩