[PIC: ETH兑人民币走势,内在价值显现]
1. 非同质化代币 NFT 基础了解一下
NFT,Non-Fungible Tokens 非同质化代币。区块链有两种数字货币,原生币和代币。原生币如比特币(BTC)和以太币(ETH),这些数字货币有自己的主链,链上交易以原生币作为手续费。代币则以智能合约为基础,依赖主链。例如,在以太坊上发布代币。这类代币又可以分为同质化代币(FT)和非同质化(NFT)。
ShoelessCai 主观地理解FT和NFT。同质化代币,可认为体系内大家所持代币相同,可交换、可分割,进而可以形成流通的货币体系。相对地,NFT则是每个用户手里的代币均不同,因此不可分割,不可交易。
NFT在娱乐和艺术品市场应用广泛,简单来说,是由于艺术家们可以创造自己的资产,独一无二,并得以在公开平台交易,进而与通用货币互换。
2. 如火如荼的 CryptoKitties
CryptoKitties是由一家加拿大公司Axiom Zen设计的、基于以太坊区块链的养猫游戏。部分业内媒体翻译为“云吸猫”,其利用资产个性化特点,提供相应游戏平台,用户可以在平台领养电子猫,领养是需要支付ETH的。一只猫就是一份资产,不能被复制、拿走或销毁——居然不能销毁。NFT应用于游戏,奇就奇在所有用户领养的猫,是不一样的。
[pic: 价值80万人民币的创世猫]
上图是CryptoKitties平台ID = 1的创世猫,售价已经达到了246个ETH,大约值11.5万美元,合辙人民币近80万元(2017年资讯)
[pic: 价值432元人民币的猫]
这是价值0.01ETH的猫,为了更清楚地衡量其价值,Jingyi测试了一下,这只猫价值432元。哇晒,有被吓到!
操作方面,可以用谷歌浏览器Chrome安装MetaMask插件;选择信用卡兑换ETH——很容易知道这只猫价值 66.34美元。依据2021年11月14日美元兑人民币汇率6.3800折算出这只猫售价,人民币432元(四舍五入)。
3. NFT于艺术品市场意义
Twitter 创始人 Jack Dorsey 称,要把自己首条推文当作 NFT 拍卖,出价最高竟然达到了 250 万美元。
Chris Torres 在彩虹猫诞生十周年之际,重制了动图,粉色方形躯体的猫在太空中奔跑,身后拖着一串彩虹。于是,加密艺术交易平台上的竞价直飙300 ETH(约59万美元)。
[pic: 十周年的“彩虹猫”]
这不免引起人们的好奇,首先,为何有人愿意重金买下上述拍卖品?其次,NFT为何广泛被用于艺术品交易?为了解释清楚,先从第二个问题入手,即为什么NFT的代币模式,广受艺术品交易市场青睐。
第一,验货容易,打假容易。区块链具有追根溯源的根本属性,而利用这种属性追溯数字资产的所有权,在国外的“先锋艺术家”圈里早已流行。第二,版税叠加性。不同于传统艺术品、文学作品流转,在区块链的世界里,艺术品再转手,艺术家仍然可以收取版税。换言之,只要作品具有足够人气,作者就有获取属于自己份额的机会。第三,由于市场完备、机制对创造者具有吸引力,瞬间捧红了许多被雪藏的艺术家。
例如,NFT出现之前,圈内人称 Beeple 的“素人数字艺术家”,全名 Mike Winklemann ,其数字作品在交易平台上以最高价 77 万美元被买走,所有作品销售额达到 350 万美元。NFT的出现,使得 Beeple 摇身一变,成为加密艺术圈最高身价的艺术家。
[pic: Beeple 数字艺术品]
从商业的角度,艺术品要在市场变现,必须对现实世界产生作用,与现实世界具有联系,可以是流通的方式,可以是表达的情感和写实感,于真实世界给予艺术品购买者欣赏的转移价值,抑或对商品化后的作品的上涨预期。无论是一级市场,还是二级市场,NFT打通这类流通渠道,以及在交易流通过程中的信任承担。
CoinFund(加密货币投资公司)创始人 Jake Brukham 用一句话总结NFT在艺术品市场的狂热应用,“你不是在购买这幅画,你是在购买这幅画的所有权。”(
硅谷密探,2021)
值得一提的是,NFT模式还有其他应用市场,例如,交易市场、加密艺术品、游戏道具、收藏品、虚拟世界,其他如门票、资产映射、数字身份、优惠券等。主流协议,ERC721/1155。来自钛媒体资讯。
接着思考第一个问题,为什么有那么多人在触及现代数字艺术之后愿意重金买下。相较于技术创新给出的新契机,这个问题更归结于艺术本源,对当代文化、技术、社会、人文,综合的理解与表达,自然有金主和买家对艺术品具有瞬间感同身受的体验,并期待周围社群也能引起相应共鸣,兴许这才是这些花重金的原因。ShoelessCai 观点。
4. 智能合约 Smart Contract 技术初探
既然NFT建立在智能合约上,那智能合约是什么?Jingyi 找到如下资料。
- A 'smart contract' is simply a program that runs on the Ethereum blockchain. It's a collection of code (its functions) and data (its state) that resides at a specific address on the Ethereum blockchain (ethereum.org).
- A smart contract is a computer program or a transaction protocol which is intended to automatically execute, control or document legally relevant events and actions according to the terms of a contract or an agreement.The objectives of smart contracts are the reduction of need in trusted intermediators, arbitrations and enforcement costs, fraud losses, as well as the reduction of malicious and accidental exceptions (Wikipedia).
- A smart contract is a self-executing contract with the terms of the agreement between buyer and seller being directly written into lines of code. The code and the agreements contained therein exist across a distributed, decentralized blockchain network. The code controls the execution, and transactions are trackable and irreversible (Investopedia).
- Smart contracts are simply programs stored on a blockchain that run when predetermined conditions are met. They typically are used to automate the execution of an agreement so that all participants can be immediately certain of the outcome, without any intermediary’s involvement or time loss. They can also automate a workflow, triggering the next action when conditions are met (IBM).
总结来说,智能合约的物理形态,是区块链上的一段程序,并且具有触发式自动执行的功能,使得参与者的交易执行状态可以立即形成。以建立在以太网的智能合约为例,代码段包含函数部分(Function)和数据部分(Data)。
代码段如何自动运行?则涉及触发代码,可以定义Class MeetUpEvent。以Java代码为例,编译之后在JVM上运行,程序在主函数创建 Class Instant Event。台北以太坊社区,某程序员将智能合约的物理形态定义为VM上的Instance——不失为一种很可靠且直接的解释。
pragma solidity 0.8.7
contract VendingMachine {
    // Declare state variables of the contract
    address public owner;
    mapping (address => uint) public cupBalances;
    // When 'VendingMachine' contract is deployed:
    // 1. set the deploying address as the owner of the contract
    // 2. set the deployed smart contract's cup balance to 100
    constructor() {
        owner = msg.sender;
        cupBalances[address(this)] = 100;
    }
    // Allow the owner to increase the smart contract's cup balance
    function refill(uint amount) public {
        require(msg.sender == owner, 'Only the owner can refill.');
        cupBalances[address(this)] += amount;
    }
    // Allow anyone to purchase cup
    function purchase(uint amount) public payable {
        require(msg.value >= amount * 1 ether, 'You must pay at least 1 ETH per cup');
        require(cupBalances[address(this)] >= amount, 'Not enough cup in stock to complete this purchase');
        cupBalances[address(this)] -= amount;
        cupBalances[msg.sender] += amount;
    }
}
|
Code From Ethereum.org