元宇宙的经济历史入门
距离上一次记录区块链相关的内容,已经过去了3年,文章见靠写代码学习什么是区块链。这三年,这个前沿的行业突飞猛进一日千里,已经远非三年前的场景了。因为在研究如何有效地建立目标一致的团队,又一次遇到了去中心化自治组织(DAO),特地重新把历史整理一下,以便建立web3的初始知识结构。
智能合约
智能合约这个词是一个叫Nick的科学家1996年前就提出的。智能并不是说像AI啥的,而是指能够比纸上的合约更加自动地去运行。2009才有比特币,2015年以太坊才推出第一个智能合约。
IBM官网也定义了什么是智能合约,保存在区块链上的一段电子的合约或者代码,如果预定的条件满足的话,就会被执行。它由简单的“如果/当…就…“的程序组成(比如说Solidity语言就是一种),网络中的矿工们会执行这些条件,如果满足就会进行记账之类的操作。在哈佛法学院Stuart的这篇论文提到,尽管越来越多的东西正在token化上链,但目前的合约还是非常基础的能够做到把A钱包的钱转B这样的事情,对于更复杂的主观法律判断,比如说是否满足商业上的努力标准或者是否要触发赔偿,依旧是需要很多年的发展。如果你想学Solidty,可以到这个网址交互式地学习,十五分钟即可掌握。
执行合约前,还会收取一个上链的费用。以太坊的话是gas。他扮演了一个重要的角色,防止太过于重的合约让运行合约的虚拟机(EVM)负载过重。目前主要两大类合约,一种是满足条件支付资金,另一类是不满足条件进行惩罚。一旦合约开始运营,就不会再进行人工干预,以减少过程中的开销。
由于智能合约与传统合同都需要法律上有认可的过程,因此一些地方的法律已经开始认可智能合约,但实际的商业中的灵活处理并不能被智能合约所完全覆盖。如果使用智能合约,有一些最佳实践:
- 纸质合同和智能合约双重准备是有意义的。因为现阶段智能合约还做不了太复杂的事情。
- 纸质合同详细记录智能合约的内容,标明链下数据丢失如何处理。
- 纸质合同记录有bug时如何处理。
- 文本记录适用的法律和地点,出现不一致时以文本为准。
- 双方都审查过代码的声明。
智能合约的真正革命将来自于我们尚未预见到的全新范式。
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 的缩写,去中心化的金融,它强调的是去中心化。用以太坊官方的文档定义,它是全球性质的、当前金融体系的替代,可以通过这些产品借、存、投资、交易、等等,完全开源。它是一系列产品的总和,所有信息全部公开在链上,供你查看和研究。传统金融与之相比的不同:
- 当前有许多人没有权限开户和使用传统金融。
- 传统的营业时间取决于不同时区,而DeFi是24小时不停的。
- 传统的内部流转常常要花很长时间。
- 传统的中介要抽成。
目前已经可以在以太坊上进行的金融操作有:
- 快速向全球的人转账。
- 发工资。
- 绑定稳定币,因为以太坊的价格不断上涨,社区不得不用稳定币来解决这个问题,稳定币像Dai和UDSC就是绑定到美元上的。拉丁美洲许多政府的货币不稳定,这已经作为他们存钱的一种办法。
- 向个人或者资金池借钱。
- 借出钱赚利息。
- 永不停的彩票,这是一种创新玩法,把你token放到池子里大家一起选,选中就有奖,没选中下周继续来。
- token兑换,就像不同币种的24小时兑换所。
- 交易组织,以太坊上还有各种各样的基金管理产品,因为不需要人,所以也不会有人来分享收益。
- 你也可以成立基金,二级融资等。
- 保险产品也可以很好的工作,虽然大多数产品是为了避免链上资产的损失,但也已经有和现实生活所关联的产品了,比如这个肯尼亚农产品天灾的险种。
从以太坊角度,主要存在以下一些概念分层:
- 区块链,提供了账号信息和交易记录的存储
- 财产,所有的token或者加密货币
- 协议,智能合约
- 应用,各种各样的DaPP帮助我们使用协议
DAOs
DAO是Decentralized autonomous organizations的缩写,官方介绍在这里。可以把DAO想象成一个由成员集体拥有和管理的互联网原生企业,在这个企业中任何人都没有特权,所有的合作不需要信任为基础,只靠DAO的合约代码,并且百分百开源给所有成员可见。常见DAO例子:
- 慈善机构可以接受来自全球的捐赠,并且由捐赠人指定款项用途。
- 自由职业者网络可以聚集一群愿意在一个方向上投资的厂家,对相关的方向集中解决需求。
- 风险投资基金,汇集资金,投票决定投和不投,自动分配收益。
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
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