Tron

帶寬?

每天每個(gè)賬號(hào)5000帶寬 抵扣手續(xù)費(fèi)

在波場(chǎng),除查詢之外的任何交易都需要消耗帶寬,系統(tǒng)每天給每個(gè)激活賬戶贈(zèng)送1500帶寬,用戶可以通過質(zhì)押trx獲得帶寬

能量?

可以自動(dòng)恢復(fù)

在波場(chǎng),智能合約的創(chuàng)建和調(diào)用都需要消耗能量,用戶可以通過質(zhì)押trx獲得能量。


pkgsign?

用于簽名和驗(yàn)證 npm 和 yarn 包的 CLI 工具。

pkgsign 是一個(gè)用于向 npm 和 yarn 包添加簽名以及使用已知簽名驗(yàn)證這些包的工具。為簡(jiǎn)單起見,它允許使用 PGP 私鑰或keybase.io對(duì)包進(jìn)行簽名。

git clone https://github.com/RedpointGames/pkgsign .

yarn # install dependencies

yarn verify # build pkgsign and verify the signature.json provided in this repository

# (should be signed by hachque at keybase.io)

yarn pack --filename=pkgsign.tgz

?# make an unsigned package for local use

npm install -g ./pkgsign.tgz

?# install pkgsign globally

驗(yàn)證包

要驗(yàn)證當(dāng)前包目錄的簽名狀態(tài),以及已安裝的所有包依賴項(xiàng),您可以使用:

pkgsign verify . --full

如果要驗(yàn)證包 tarball 的簽名,可以使用:

pkgsign verify mypackage-v1.0.0.tgz --package-name mypackage

簽署包

您可以使用keybase.io或 PGP 密鑰對(duì)對(duì)包進(jìn)行簽名,其中公鑰可在公共 HTTPS URL 上獲得。

如果您已安裝密鑰庫(kù)并在 PATH 中,則可以使用以下命令對(duì)當(dāng)前包目錄進(jìn)行簽名:

pkgsign sign .

或者,如果您想使用 keybase 對(duì) tarball 進(jìn)行簽名,您可以使用以下命令進(jìn)行簽名:

pkgsign sign mypackage-v1.0.0.tgz

如果你想用 PGP 密鑰對(duì)簽署一個(gè)包,你可以使用:

pkgsign sign --signer pgp --pgp-private-key-path ./privkey.key --pgp-private-key-passphrase mypassphrase --pgp-public-key-https-url https://example.com/mykey.asc .

要使用 PGP 密鑰對(duì)簽署 tarball,請(qǐng)傳遞 tarball 路徑而不是包目錄。

應(yīng)該注意的是,公鑰 HTTPS URL 被用作身份 - 如果 URL 發(fā)生變化,這與其他人簽署您的包是一樣的,并且 pkgsign 會(huì)認(rèn)為具有不同 URL 的包已被盜用。

tronide

tronbox

tronlink

TRC-721合約標(biāo)準(zhǔn)

TRC-721是在波場(chǎng)公鏈上發(fā)行非同質(zhì)化代幣(non-fungible token, NFT)一套標(biāo)準(zhǔn)接口,與ERC-721完全兼容。由于 TRC-721 中的每個(gè)代幣都是唯一的,因此 TRC-20 標(biāo)準(zhǔn)不足以處理 NFT。

必須實(shí)現(xiàn)的接口

每個(gè)符合TRC-721標(biāo)準(zhǔn)的智能合約都必須實(shí)現(xiàn)TRC721與TRC165接口。

Solidity

pragmasolidity^0.4.20;interfaceTRC721{eventTransfer(addressindexed_from,addressindexed_to,uint256indexed_tokenId);eventApproval(addressindexed_owner,addressindexed_approved,uint256indexed_tokenId);eventApprovalForAll(addressindexed_owner,addressindexed_operator,bool_approved);functionbalanceOf(address_owner)externalviewreturns(uint256);functionownerOf(uint256_tokenId)externalviewreturns(address);functionsafeTransferFrom(address_from,address_to,uint256_tokenId,bytesdata)externalpayable;functionsafeTransferFrom(address_from,address_to,uint256_tokenId)externalpayable;functiontransferFrom(address_from,address_to,uint256_tokenId)externalpayable;functionapprove(address_approved,uint256_tokenId)externalpayable;functionsetApprovalForAll(address_operator,bool_approved)external;functiongetApproved(uint256_tokenId)externalviewreturns(address);functionisApprovedForAll(address_owner,address_operator)externalviewreturns(bool);? }interfaceTRC165{functionsupportsInterface(bytes4interfaceID)externalviewreturns(bool);? }

balanceOf(address _owner)

返回指定賬戶擁有的 NFT 數(shù)量

ownerOf(uint256 _tokenId)

返回指定 NFT 的所有者

safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data)

轉(zhuǎn)讓 NFT 的所有權(quán)

safeTransferFrom(address _from, address _to, uint256 _tokenId)

轉(zhuǎn)讓 NFT 的所有權(quán)

transferFrom(address _from, address _to, uint256 _tokenId)

轉(zhuǎn)讓一個(gè)NFT的所有權(quán)(調(diào)用者必須確認(rèn)_to地址是否可以正常接收NFT,否則NFT會(huì)丟失)

approve(address _approved, uint256 _tokenId)

授予其他人 NFT 的控制權(quán)

setApprovalForAll(address _operator, bool _approved)

由第三方 (_operator) 授予/恢復(fù)對(duì)所有 NFT 的控制權(quán)

getApproved(uint256 _tokenId)

查詢某個(gè) NFT 的授權(quán)

isApprovedForAll(address _owner, address _operator)

查詢operator是否為業(yè)主授權(quán)地址

supportsInterface(bytes4 interfaceID)

查詢是否支持某個(gè)接口(interfaceID)

event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId)

Approve 成功后會(huì)觸發(fā) Approval 事件

event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId)

成功的 transferFrom 和 safeTransferFrom 將觸發(fā) Transfer 事件

event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved)

setApprovalForAll 成功后會(huì)觸發(fā) ApprovalForAll 事件

合約如果需要接受安全轉(zhuǎn)賬,必須實(shí)現(xiàn)TRC721TokenReceiver接口:

Solidity

interfaceTRC721TokenReceiver{//This method will be triggered when the ‘_to’ is the contract address during the ‘safeTransferFrom’ execution, and the return value must be checked, If the return value is not? bytes4(keccak256("onTRC721Received(address,address,uint256,bytes)")) throws an exception. The smart contract which can receive NFT must implement the TRC721TokenReceiver interface.functiononTRC721Received(address_operator,address_from,uint256_tokenId,bytes_data)externalreturns(bytes4);? }

onTRC721Received(address _operator, address _from, uint256 _tokenId, bytes _data)

與safeTransferFrom方法配合使用,當(dāng)_to為合約地址時(shí),需要調(diào)用該方法并檢查返回值。 如果返回值不是 bytes4(keccak256("onTRC721Received(address,address,uint256,bytes)")) 將拋出異常。 可以接收 NFT 的智能合約必須實(shí)現(xiàn) TRC721TokenReceiver 接口。

??

注意

bytes4(keccak256("onTRC721Received(address,address,uint256,bytes))) 的哈希值與以太坊版本 bytes4(keccak256("onERC721Received(address,address,uint256,bytes))) 不同。 對(duì)于函數(shù)onTRC721Received的返回值,請(qǐng)使用0x5175f878而不是0x150b7a02。

metadata extension接口(可選)

metadata extension接口對(duì)于TRC-721智能合約來說是可選的,用戶可以查詢智能合約的名稱以及NFT代表的資產(chǎn)的詳細(xì)信息。

Solidity

interfaceTRC721Metadata{functionname()externalviewreturns(string_name);functionsymbol()externalviewreturns(string_symbol);functiontokenURI(uint256_tokenId)externalviewreturns(string);? }

name()

返回合約名稱

symbol()

返回合約代碼

tokenURI(uint256 _tokenId)

返回 _tokenId 對(duì)應(yīng)的外部文件的 URI。 外部資源文件需要包括名稱、描述和圖片。

enumeration extension接口(可選)

enumeration extension對(duì)于TRC-721智能合約是可選的,允許用戶的智能合約發(fā)布其NFT的完整列表并使其可見。

Solidity

interfaceTRC721Enumerable{functiontotalSupply()externalviewreturns(uint256);functiontokenByIndex(uint256_index)externalviewreturns(uint256);functiontokenOfOwnerByIndex(address_owner,uint256_index)externalviewreturns(uint256);? }

totalSupply()

返回 NFT 的總量

tokenByIndex(uint256 _index)

通過_index返回對(duì)應(yīng)的tokenId

tokenOfOwnerByIndex(address _owner, uint256 _index)

返回所有者擁有的 NFT 列表中索引對(duì)應(yīng)的 tokenId

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容