post

元宇宙的经济历史入门

John · Nov 5, 2021

· 2 min read ·

距离上一次记录区块链相关的内容,已经过去了3年,文章见靠写代码学习什么是区块链。这三年,这个前沿的行业突飞猛进一日千里,已经远非三年前的场景了。因为在研究如何有效地建立目标一致的团队,又一次遇到了去中心化自治组织(DAO),特地重新把历史整理一下,以便建立web3的初始知识结构。

智能合约

智能合约这个词是一个叫Nick的科学家1996年前就提出的。智能并不是说像AI啥的,而是指能够比纸上的合约更加自动地去运行。2009才有比特币,2015年以太坊才推出第一个智能合约。

IBM官网也定义了什么是智能合约,保存在区块链上的一段电子的合约或者代码,如果预定的条件满足的话,就会被执行。它由简单的“如果/当…就…“的程序组成(比如说Solidity语言就是一种),网络中的矿工们会执行这些条件,如果满足就会进行记账之类的操作。在哈佛法学院Stuart的这篇论文提到,尽管越来越多的东西正在token化上链,但目前的合约还是非常基础的能够做到把A钱包的钱转B这样的事情,对于更复杂的主观法律判断,比如说是否满足商业上的努力标准或者是否要触发赔偿,依旧是需要很多年的发展。如果你想学Solidty,可以到这个网址交互式地学习,十五分钟即可掌握。

执行合约前,还会收取一个上链的费用。以太坊的话是gas。他扮演了一个重要的角色,防止太过于重的合约让运行合约的虚拟机(EVM)负载过重。目前主要两大类合约,一种是满足条件支付资金,另一类是不满足条件进行惩罚。一旦合约开始运营,就不会再进行人工干预,以减少过程中的开销。

由于智能合约与传统合同都需要法律上有认可的过程,因此一些地方的法律已经开始认可智能合约,但实际的商业中的灵活处理并不能被智能合约所完全覆盖。如果使用智能合约,有一些最佳实践:

  1. 纸质合同和智能合约双重准备是有意义的。因为现阶段智能合约还做不了太复杂的事情。
  2. 纸质合同详细记录智能合约的内容,标明链下数据丢失如何处理。
  3. 纸质合同记录有bug时如何处理。
  4. 文本记录适用的法律和地点,出现不一致时以文本为准。
  5. 双方都审查过代码的声明。

智能合约的真正革命将来自于我们尚未预见到的全新范式。

Token

或者叫成加密Token,它实际上是加密货币或者虚拟货币的一种单位,用来代表区块链上的资产或者特别用在自己链上的符号。每种token实际上都是一种加密货币。可用于投资、保存价值、或者支付。token经常被用来众筹集资(initial coin offering,见后面ICO)。

比特币作为第一个加密货币,后续出现了大量的相似的产品,统一都被称作了代币(Altcoin),像以太坊的ETH、狗狗币等等。而token更多的用于在智能合约执行过程中,作为其中的元素。常常用于就像公司股份一样的作用存在,也可以交易和买卖。

区块链上的token可以包括奖励token,货币token,使用权token,证券token,资产token等各种。

币和token并不是同一个东西,比如说以太坊的ETH是币,而在上面运行的token却有非常多,支付手续费后,都可以自己完成一个token的生成和集资,而人们为什么给你集资的原因,就是你的token能实际用来做啥。

这里提供了一些例子,你发token集资开了一个咖啡店,给所有的用户发一个使用权的token,他们就可以用这个token来喝咖啡。证券token是指token价值绑定在三方物品上,比如发行一个token绑定等量的黄金(需要准备实物)。治理token,基本上就是投票权的代表,你拥有的越多,话语权越大,某种情况下会导致中心化。

如何发token呢?让我们到下节来看。

ICO

ICO是“initial coin offering”的缩写,是非常流行的早期区块链项目筹资的方式。2017年达到了顶峰,超过了风险投资作为区块链创业公司的融资方式。

以太坊的ICO是第一个成功的故事,2014众筹了一千多万美元,卖ether token以0.311的价格,现在的价格是4000左右,当时的投资者们获得了1,408,903%的回报。这里对历史上的重要ICO进行了汇总,2013年第一次是MasterCoin集了60万美金,2014年以太坊,2016年的The DAO黑客事件让以太坊发生了硬分叉。2017年看到一个高峰,54亿美金靠ICO总计。

2017年开始,大量国家开始关注ICO,美国认为应该纳入证券管理。澳大利亚、英国等一系列国家警告大家参与欺诈的ICO可能带来的危害。韩国、中国、泰国同时都禁止了ICO。因缺乏监管,大量的ICO都是欺诈。并且2018的报告发现,一半以上的ICO项目都活不过4个月。

要做ICO,就得先生成token。以太坊生成token的教程比较多,主要是用Solidity语言按照ERC20协议编程到智能合约中,完成token的生成和发放的过程。


113     // ------------------------------------------------------------------------
114     // Constructor
115     // ------------------------------------------------------------------------
116     constructor() public {
117         symbol = "FIXED";
118         name = "Example Fixed Supply Token";
119         decimals = 18;
120         _totalSupply = 1000000 * 10**uint(decimals);
121         balances[owner] = _totalSupply;
122         emit Transfer(address(0), owner, _totalSupply);
123     }

官方例子代码 在智能合约的结构体这里初始化了1,000,000个单位的新token到自己的账号,再通过其他遵循ERC20接口的代码在执行智能合约的时间进行发token操作。

一些其他人的例子:

OpenZeppelin ConsenSys 这个教程很详细

NFT

根据ERC721 定义了NFT的所有接口,按照这个文档。 NFT是non-fungible tokens的缩写,非同质代币,就像金银珠宝的证书一样。ERC721主要定义了跟踪和传输NFT的能力。NFT在这里被考虑为代表电子资产或者真实资产的拥有权,可以包括 物理资产(房子,唯一的艺术品),虚拟收藏(唯一的小猫照片),负资产(欠款贷款或者责任)。ERC721是基于ERC20(借了2年的经验),同时因为NFT要求非同质化,ERC20生成的同一批token是同质化的。从实现的metadata可以看出,链上只是记录了一个URI,URI里指向一个JSON记录,如果是图片,还得再包一层图片地址。

/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
/// @dev See https://eips.ethereum.org/EIPS/eip-721
///  Note: the ERC-165 identifier for this interface is 0x5b5e139f.
interface ERC721Metadata /* is ERC721 */ {
    /// @notice A descriptive name for a collection of NFTs in this contract
    function name() external view returns (string _name);

    /// @notice An abbreviated name for NFTs in this contract
    function symbol() external view returns (string _symbol);

    /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
    /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC
    ///  3986. The URI may point to a JSON file that conforms to the "ERC721
    ///  Metadata JSON Schema".
    function tokenURI(uint256 _tokenId) external view returns (string);
}

URI地址指向的JSON:

{
    "title": "Asset Metadata",
    "type": "object",
    "properties": {
        "name": {
            "type": "string",
            "description": "Identifies the asset to which this NFT represents"
        },
        "description": {
            "type": "string",
            "description": "Describes the asset to which this NFT represents"
        },
        "image": {
            "type": "string",
            "description": "A URI pointing to a resource with mime type image/* representing the asset to which this NFT represents. Consider making any images at a width between 320 and 1080 pixels and aspect ratio between 1.91:1 and 4:5 inclusive."
        }
    }
}

到这里你会发现,虽然NFT是在链上了,URI并不一定是在链上吧。这就引出了新的话题,不考虑全部上链之后的开销,也是可以全部放到链上的。

相比之下,NFT的转移方法需要更严格的确认。这里给了个不错的例子从0创建一个NFT智能合约到链上。

DeFi

DeFi是 decentralized finance 的缩写,去中心化的金融,它强调的是去中心化。用以太坊官方的文档定义,它是全球性质的、当前金融体系的替代,可以通过这些产品借、存、投资、交易、等等,完全开源。它是一系列产品的总和,所有信息全部公开在链上,供你查看和研究。传统金融与之相比的不同:

  1. 当前有许多人没有权限开户和使用传统金融。
  2. 传统的营业时间取决于不同时区,而DeFi是24小时不停的。
  3. 传统的内部流转常常要花很长时间。
  4. 传统的中介要抽成。

目前已经可以在以太坊上进行的金融操作有:

  1. 快速向全球的人转账。
  2. 发工资。
  3. 绑定稳定币,因为以太坊的价格不断上涨,社区不得不用稳定币来解决这个问题,稳定币像Dai和UDSC就是绑定到美元上的。拉丁美洲许多政府的货币不稳定,这已经作为他们存钱的一种办法。
  4. 向个人或者资金池借钱。
  5. 借出钱赚利息。
  6. 永不停的彩票,这是一种创新玩法,把你token放到池子里大家一起选,选中就有奖,没选中下周继续来。
  7. token兑换,就像不同币种的24小时兑换所。
  8. 交易组织,以太坊上还有各种各样的基金管理产品,因为不需要人,所以也不会有人来分享收益。
  9. 你也可以成立基金,二级融资等。
  10. 保险产品也可以很好的工作,虽然大多数产品是为了避免链上资产的损失,但也已经有和现实生活所关联的产品了,比如这个肯尼亚农产品天灾的险种。

从以太坊角度,主要存在以下一些概念分层:

  1. 区块链,提供了账号信息和交易记录的存储
  2. 财产,所有的token或者加密货币
  3. 协议,智能合约
  4. 应用,各种各样的DaPP帮助我们使用协议

DAOs

DAO是Decentralized autonomous organizations的缩写,官方介绍在这里。可以把DAO想象成一个由成员集体拥有和管理的互联网原生企业,在这个企业中任何人都没有特权,所有的合作不需要信任为基础,只靠DAO的合约代码,并且百分百开源给所有成员可见。常见DAO例子:

  1. 慈善机构可以接受来自全球的捐赠,并且由捐赠人指定款项用途。
  2. 自由职业者网络可以聚集一群愿意在一个方向上投资的厂家,对相关的方向集中解决需求。
  3. 风险投资基金,汇集资金,投票决定投和不投,自动分配收益。

DAO成员角色一般由token来确认,token可能是交易来的,也有可能是用一些工作证明取得的,不论哪种,成员有了token才能参加投票。MakerDAO的MKR就是这种token。

DAO的基础就是智能合约,他定义了组织的规则以及保存了组织的财富。在以太坊上一旦上链,就无人能改了,除非进行投票。今天的DAO变得更加复杂,并控制着超出1%的DeFi协议。

拿DAI稳定币的生态来举例,现在有一千八百多万个DAI锁定在DeFi协议中,Compound Finance和Uniswap依靠MakerDAO的token持有人来维持稳定,这个体系正在不断地成长,也许有一天,你会在本地股票市场的新闻中看到MakerDAO的决定。

这里介绍了如何加入现在的以太坊社区,里面有许多不同背景的能人(开发者,艺术家,会计师)。

作为一个开发者,能做什么呢?学习开发技能,解决技术问题赚币,参加hackathon,checkout出来会的代码,参加Core Dev calls,看wishlist,参加web3社区。

如何自己弄个DAO?主要是要生成智能合约然后上链,不过已经有很多工具或者网站可以帮忙,比如说DAOstack。如何加入已经存在的DAO?这里有个列表,有关于法务的艺术的投资的web3的等等。

Web3

这里 介绍了Web2和Web3的区别。在以太坊上的所有去中心化的app被定义为Web3。它们具备如下的一些特点:Web3的内容去中心化了不能审查,不需要个人信息不会被阻止使用app,永不停服。Web3限制目前看主要有 交易慢,用户交互还需要教育,新浏览器支持有限,上链还很贵。

引用

https://hackernoon.com/learn-blockchains-by-building-one-117428612f46

https://www.ibm.com/topics/smart-contracts

https://corpgov.law.harvard.edu/2018/05/26/an-introduction-to-smart-contracts-and-their-potential-and-inherent-limitations/

Nick Szabo, “Smart Contracts: Building Blocks for Digital Market,” 1996, http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html

https://www.bitdegree.org/course/learn-solidity-space-doggos

https://www.investopedia.com/terms/c/crypto-token.asp

https://devbugging.com/difference-between-tokens-and-coins/

https://devbugging.com/different-types-of-tokens-in-crypto-explained/

https://www.coindesk.com/learn/what-is-an-ico/

https://theethereum.wiki/erc20_token_standard/

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md

https://eips.ethereum.org/EIPS/eip-721

https://ethereum.org/en/developers/tutorials/how-to-write-and-deploy-an-nft/

https://docs.openzeppelin.com/contracts/2.x/erc721

https://www.ludu.co/course/ethereum/ico

https://ethereum.org/en/defi/

https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc

https://ethereum.org/en/community/

https://daostack.io/

https://ethereum.org/en/community/#decentralized-autonomous-organizations-daos/community/#decentralized-autonomous-organizations-daos

https://ethereum.org/en/developers/docs/web2-vs-web3/

Gallery