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则定义了代币的基本操作接口。这些技术正在重塑数字世界的权利、义务与资产交易秩序,推动去中心化的新经济模式发展。