web3-虛擬合約 vs 現實合同:權利、義務與資產的鏈上新秩序
一、智能合約vs真實世界合約
傳統合約:基礎要素
如下圖,現實世界的合約,會有一個條款,然后下面還有一個“Alice”的簽名
提出合約和接受合約;
考慮;
雙方之間的協議;
合法性和履約能力;
例子:代幣銷售
Bob 是一個接收方,Bob至少支付高于1個以太坊給Alice,然后Alice給Bob對應的catToken
contract ContractOffer {address payable public Alice = address(0x0);address payable public Bob = address(0x0);// Hardcoded address of the CAT token Token public CatToken = Token(address(0x0));function bobAcceptsOffer() public payable {require(msg.sender == Bob); // Only offered to Bobrequire(msg.value == 1.0ether); // Payment must be 1 ETHrequire(now <= 1613937837); //Offer good through Feb 21// Transfer the payment to AliceAlice.transfer(1.0ether);// Transfer the CAT token to BobCatToken.transfer(Alice,Bob,1.0);}
}
傳統合約的看法
- 提出合約和接受合約
- 要接受合約,必須對交易進行數字簽名。Alice必須提前將資產轉移到合約中
- 考慮
- 付款以區塊鏈中的本幣收取
- 雙方協議
- 合約的高級代碼通常會發布
- 合法性和履約能力
- 合約代碼的執行自動在支付的同一筆交易中進行數字資產的轉移
“智能合約”概念化 by Szabo in 1994
智能合約是一種執行合約條款的計算機化交易協議
總體目標是滿足合同條件(例如支付條款、留置權、保密性、強制執行性),最大限度地減少惡意的外部情況,并最大限度地減少對受信任中間的需求。 相關的經濟目標包括 降低欺詐損失、仲裁和執行成本 以及其他交易成本。
二、以太坊上的同質化代幣和非同質化代幣
什么是代幣?
代幣是一個充當數字資產的一個智能合約
非同質化代幣==>NFT
NFT遵循的一些標準
NFT的一個交易模版
contract NonFungibleToken {struct Record {string description;address owner;bool exists;}mapping (uint => Record) public table;uint public nextid = 0;function ownerOf(uint id) view public returns(address) {return table[id].owner;}address public administrator;constructor () public { administrator = msg.sender;}function mint(string memory description) public {require(msg.sender == administrator);require(table[nextid].exists == false);table[nextid].exists = true;table[nextid].owner = msg.sender;table[nextid].description = description;nextid +=1;}function transfer(uint id,address to) public {require(table[id].exists);require(ownerOf(id) == msg.sender);table[id].owner = to;}
}
ERC20定義基本代幣的行為界面
Basic functionality:
function totalSupply() contant returns (uint256 totalSupply)
function balanceOf(address _owner) contant returns (uint256 balance)
function transfer(address _to,uint256 _value) returns (bool success)
Delegating control:
function transferFrom(address _from,address _to,uint256 _value) returns (bool success)
function approve(address _spender,uint256 _value) returns(bool success)
function allowance(address _owner,address _spender) constant returns (uint256 remaining)
總結
本文探討了web3時代智能合約與傳統合同的區別,以及區塊鏈資產的新形態。傳統合同依賴法律框架,而智能合約通過代碼自動執行,降低信任成本。文章詳細分析了同質化代幣(ERC20)和非同質化代幣(NFT)的技術實現,包括智能合約代碼示例。NFT通過唯一標識符實現數字資產確權,ERC20則定義了代幣的基本操作接口。這些技術正在重塑數字世界的權利、義務與資產交易秩序,推動去中心化的新經濟模式發展。