區(qū)塊鏈如何來(lái)標(biāo)記數(shù)字資產(chǎn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在本文中,我將為數(shù)字資產(chǎn)實(shí)現(xiàn)一個(gè)簡(jiǎn)單有效的標(biāo)記化智能合約。如果你覺(jué)得代碼有用,請(qǐng)隨意重用。
本文的第二個(gè)目的是說(shuō)明為什么一些用于區(qū)塊鏈開(kāi)發(fā)的用例是有用的,而另一些用例則更值得懷疑。通常關(guān)鍵在于權(quán)力下放是否合理。
區(qū)塊鏈允許我們構(gòu)建不同于傳統(tǒng)解決方案的軟件。使用區(qū)塊鏈,您可以構(gòu)建可信任的分布式應(yīng)用程序,以存儲(chǔ)未被篡改的數(shù)據(jù)。分布式是一個(gè)必要的要求,你可以開(kāi)發(fā)許多不同的區(qū)塊鏈解決方案,但要想讓任何一個(gè)區(qū)塊鏈解決方案達(dá)到盈利規(guī)模,你必須接受你不會(huì)控制它。這是個(gè)棘手的問(wèn)題。
分布式工作的用例的一個(gè)例子是比特幣。它作為一個(gè)可信的區(qū)塊鏈應(yīng)用程序的實(shí)現(xiàn)使得比特幣在沒(méi)有任何集中控制或策略的情況下得以有機(jī)增長(zhǎng)。比特幣成為某種貨幣或資產(chǎn),并使一些人非常富有,因?yàn)橛凶銐蚨嗟娜苏J(rèn)為它有價(jià)值。
現(xiàn)在,在以太坊(ethereum)或超賬本(hyperledger)等平臺(tái)上輕松構(gòu)建區(qū)塊鏈應(yīng)用程序成為可能,試圖利用區(qū)塊鏈機(jī)會(huì)的想法數(shù)量激增。
區(qū)塊鏈應(yīng)用的一種常見(jiàn)模式是某些市場(chǎng)的實(shí)施。世界上許多市場(chǎng)的效率都非常低,市場(chǎng)制造商在訴訟程序中占很大比例。區(qū)塊鏈本質(zhì)上需要移除中間商,將中介成本返還給用戶(hù)。
使用區(qū)塊鏈,您可以構(gòu)建可信任的分布式應(yīng)用程序,以存儲(chǔ)未被篡改的數(shù)據(jù)。
在討論標(biāo)記化方案時(shí),我喜歡對(duì)物理資產(chǎn)和數(shù)字資產(chǎn)進(jìn)行非常明確的區(qū)分。當(dāng)標(biāo)記化物理資產(chǎn)時(shí),與物理世界有復(fù)雜的關(guān)系。像誰(shuí)實(shí)際持有資產(chǎn)這樣的問(wèn)題很重要??紤]到您可以對(duì)資產(chǎn)執(zhí)行的主要操作之一是轉(zhuǎn)移它,您需要將令牌轉(zhuǎn)移與資產(chǎn)轉(zhuǎn)移同步,這不是一項(xiàng)容易的任務(wù)。
標(biāo)記化數(shù)字資產(chǎn)要簡(jiǎn)單得多。您可以使用您的數(shù)字資產(chǎn)的令牌表示,并很容易地將令牌與資產(chǎn)相錨對(duì)。我們可以輕松地自動(dòng)化整個(gè)業(yè)務(wù)流程。讓我們看一個(gè)例子。
商業(yè)案例
在我們的業(yè)務(wù)案例中,我們將在區(qū)塊鏈平臺(tái)中管理軟件許可證。這些許可證將使用按使用付費(fèi)模式。就這樣,簡(jiǎn)單。
按次使用付費(fèi)是一個(gè)有效的貨幣化過(guò)程,但在管理許可證時(shí)相當(dāng)麻煩。離線許可證通常很容易破解,要擁有在線許可證,您需要維護(hù)服務(wù)器。至少會(huì)有點(diǎn)頭痛。
使用區(qū)塊鏈,我們可以實(shí)施有效的許可證系統(tǒng)。我們將要包括的其他功能是收集付款以充值許可證的工具,以及用戶(hù)如果愿意交易許可證的機(jī)會(huì)。除此之外,維護(hù)許可證系統(tǒng)將由用戶(hù)以非常低的費(fèi)率支付。
案例實(shí)施
ERC721合同生成唯一可識(shí)別的令牌,這些令牌不能合并或分解為分?jǐn)?shù)。這些是用于標(biāo)記化資產(chǎn)的非常有用的功能,這通常使ERC721合同成為此類(lèi)方案的理想起點(diǎn)。
著名的erc721令牌示例是cryptokitties。這些都是數(shù)字寵物,本身是相同的,除了一些審美特征編碼在他們的標(biāo)識(shí)符。你可以很容易地看到任何兩個(gè)密碼貓是不同的,你不能分割或合并密碼貓。
我們的許可證管理合同將使用ERC721標(biāo)準(zhǔn)。我建議你看一下代碼,即使你是一個(gè)商人。即使您不知道如何編寫(xiě)代碼,也應(yīng)該通過(guò)閱讀方法名和注釋了解可以做什么。
我們的許可證管理合同將使用ERC721標(biāo)準(zhǔn)。我建議你看一下代碼,即使你是一個(gè)商人。即使您不知道如何編寫(xiě)代碼,也應(yīng)該通過(guò)閱讀方法名和注釋了解可以做什么。
許可證將在一段時(shí)間后到期,必須加滿才能保持有效。為此,我們將在許可證和到期日期之間創(chuàng)建一個(gè)額外的映射。我們將有一種方法可以接受ether并將許可證的到期日期推到將來(lái)。
在那之后,我們只需要一個(gè)更簡(jiǎn)單的方法來(lái)檢查到期日期。完整合同如下:
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)的標(biāo)記化是一種流行的概念,但并非所有用例都適用于它。 數(shù)字資產(chǎn)的標(biāo)記化是一種完美的契合,可以生成簡(jiǎn)單而有效的實(shí)現(xiàn)。 自動(dòng)化經(jīng)常被視為區(qū)塊鏈的優(yōu)勢(shì)之一,但自動(dòng)化對(duì)于數(shù)字資產(chǎn)來(lái)說(shuō)是很自然的。
ERC721合同為我們提供了非常有用的功能,可以在各種方案中使用,條件是資產(chǎn)必須是真正唯一、不可分割和易于交易的。
來(lái)源: 區(qū)塊鏈研究實(shí)驗(yàn)室