區(qū)塊鏈如何來標記數(shù)字資產(chǎn)
在本文中,我將為數(shù)字資產(chǎn)實現(xiàn)一個簡單有效的標記化智能合約。如果你覺得代碼有用,請隨意重用。
本文的第二個目的是說明為什么一些用于區(qū)塊鏈開發(fā)的用例是有用的,而另一些用例則更值得懷疑。通常關鍵在于權(quán)力下放是否合理。
區(qū)塊鏈允許我們構(gòu)建不同于傳統(tǒng)解決方案的軟件。使用區(qū)塊鏈,您可以構(gòu)建可信任的分布式應用程序,以存儲未被篡改的數(shù)據(jù)。分布式是一個必要的要求,你可以開發(fā)許多不同的區(qū)塊鏈解決方案,但要想讓任何一個區(qū)塊鏈解決方案達到盈利規(guī)模,你必須接受你不會控制它。這是個棘手的問題。
分布式工作的用例的一個例子是比特幣。它作為一個可信的區(qū)塊鏈應用程序的實現(xiàn)使得比特幣在沒有任何集中控制或策略的情況下得以有機增長。比特幣成為某種貨幣或資產(chǎn),并使一些人非常富有,因為有足夠多的人認為它有價值。
現(xiàn)在,在以太坊(ethereum)或超賬本(hyperledger)等平臺上輕松構(gòu)建區(qū)塊鏈應用程序成為可能,試圖利用區(qū)塊鏈機會的想法數(shù)量激增。
區(qū)塊鏈應用的一種常見模式是某些市場的實施。世界上許多市場的效率都非常低,市場制造商在訴訟程序中占很大比例。區(qū)塊鏈本質(zhì)上需要移除中間商,將中介成本返還給用戶。
使用區(qū)塊鏈,您可以構(gòu)建可信任的分布式應用程序,以存儲未被篡改的數(shù)據(jù)。
在討論標記化方案時,我喜歡對物理資產(chǎn)和數(shù)字資產(chǎn)進行非常明確的區(qū)分。當標記化物理資產(chǎn)時,與物理世界有復雜的關系。像誰實際持有資產(chǎn)這樣的問題很重要??紤]到您可以對資產(chǎn)執(zhí)行的主要操作之一是轉(zhuǎn)移它,您需要將令牌轉(zhuǎn)移與資產(chǎn)轉(zhuǎn)移同步,這不是一項容易的任務。
標記化數(shù)字資產(chǎn)要簡單得多。您可以使用您的數(shù)字資產(chǎn)的令牌表示,并很容易地將令牌與資產(chǎn)相錨對。我們可以輕松地自動化整個業(yè)務流程。讓我們看一個例子。
商業(yè)案例
在我們的業(yè)務案例中,我們將在區(qū)塊鏈平臺中管理軟件許可證。這些許可證將使用按使用付費模式。就這樣,簡單。
按次使用付費是一個有效的貨幣化過程,但在管理許可證時相當麻煩。離線許可證通常很容易破解,要擁有在線許可證,您需要維護服務器。至少會有點頭痛。
使用區(qū)塊鏈,我們可以實施有效的許可證系統(tǒng)。我們將要包括的其他功能是收集付款以充值許可證的工具,以及用戶如果愿意交易許可證的機會。除此之外,維護許可證系統(tǒng)將由用戶以非常低的費率支付。
案例實施
ERC721合同生成唯一可識別的令牌,這些令牌不能合并或分解為分數(shù)。這些是用于標記化資產(chǎn)的非常有用的功能,這通常使ERC721合同成為此類方案的理想起點。
著名的erc721令牌示例是cryptokitties。這些都是數(shù)字寵物,本身是相同的,除了一些審美特征編碼在他們的標識符。你可以很容易地看到任何兩個密碼貓是不同的,你不能分割或合并密碼貓。
我們的許可證管理合同將使用ERC721標準。我建議你看一下代碼,即使你是一個商人。即使您不知道如何編寫代碼,也應該通過閱讀方法名和注釋了解可以做什么。
我們的許可證管理合同將使用ERC721標準。我建議你看一下代碼,即使你是一個商人。即使您不知道如何編寫代碼,也應該通過閱讀方法名和注釋了解可以做什么。
許可證將在一段時間后到期,必須加滿才能保持有效。為此,我們將在許可證和到期日期之間創(chuàng)建一個額外的映射。我們將有一種方法可以接受ether并將許可證的到期日期推到將來。
在那之后,我們只需要一個更簡單的方法來檢查到期日期。完整合同如下:
pragma solidity ^0.5.0;
import “openzeppelin-solidity/contracts/token/ERC721/ERC721.sol”;
import “openzeppelin-solidity/contracts/ownership/Ownable.sol”;
import “openzeppelin-solidity/contracts/math/Math.sol”;
/**
* @TItle License Token
* @author Alberto Cuesta Canada
* @noTIce Implements an ERC721 license token with validity by top up.
*/
contract LicenseToken is ERC721, Ownable {
event TopUp(uint256 licenseId, uint256 expire);
/**
* @noTIce mapping from token id to expire date (in unix TIme)
*/
mapping(uint256 =》 uint256) internal expire;
/**
* @notice Delay the expiration of a license by a second per wei.
* @param _licenseId The license id.
*/
function topUp(uint256 _licenseId)
external
payable
{
uint256 timeToAdd = msg.value;
expire[_licenseId] =
Math.max(now, expire[_licenseId]) + timeToAdd;
emit TopUp(_licenseId, expire[_licenseId]);
}
/**
* @notice Mint new licenses, only owner.
* @param _to The address to receive the license.
* @param _licenseId The unique license id.
*/
function mint(address _to, uint256 _licenseId)
public
onlyOwner()
{
_mint(_to, _licenseId);
}
/**
* @notice Retrieve an expire date for a license
* @param _licenseId The license id.
*/
function getExpire(uint256 _licenseId)
public
view
returns(uint256)
{
return expire[_licenseId];
}
}
結(jié)論
區(qū)塊鏈中資產(chǎn)的標記化是一種流行的概念,但并非所有用例都適用于它。 數(shù)字資產(chǎn)的標記化是一種完美的契合,可以生成簡單而有效的實現(xiàn)。 自動化經(jīng)常被視為區(qū)塊鏈的優(yōu)勢之一,但自動化對于數(shù)字資產(chǎn)來說是很自然的。
ERC721合同為我們提供了非常有用的功能,可以在各種方案中使用,條件是資產(chǎn)必須是真正唯一、不可分割和易于交易的。
來源: 區(qū)塊鏈研究實驗室





