Tron

带宽 

每天每个账号5000带宽 抵扣手续费

在波场,除查询之外的任何交易都需要消耗带宽,系统每天给每个激活账户赠送1500带宽,用户可以通过质押trx获得带宽

能量 

可以自动恢复

在波场,智能合约的创建和调用都需要消耗能量,用户可以通过质押trx获得能量。


pkgsign 

用于签名和验证 npm 和 yarn 包的 CLI 工具。

pkgsign 是一个用于向 npm 和 yarn 包添加签名以及使用已知签名验证这些包的工具。为简单起见,它允许使用 PGP 私钥或keybase.io对包进行签名。

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

验证包

要验证当前包目录的签名状态,以及已安装的所有包依赖项,您可以使用:

pkgsign verify . --full

如果要验证包 tarball 的签名,可以使用:

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

签署包

您可以使用keybase.io或 PGP 密钥对对包进行签名,其中公钥可在公共 HTTPS URL 上获得。

如果您已安装密钥库并在 PATH 中,则可以使用以下命令对当前包目录进行签名:

pkgsign sign .

或者,如果您想使用 keybase 对 tarball 进行签名,您可以使用以下命令进行签名:

pkgsign sign mypackage-v1.0.0.tgz

如果你想用 PGP 密钥对签署一个包,你可以使用:

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 密钥对签署 tarball,请传递 tarball 路径而不是包目录。

应该注意的是,公钥 HTTPS URL 被用作身份 - 如果 URL 发生变化,这与其他人签署您的包是一样的,并且 pkgsign 会认为具有不同 URL 的包已被盗用。

tronide

tronbox

tronlink

TRC-721合约标准

TRC-721是在波场公链上发行非同质化代币(non-fungible token, NFT)一套标准接口,与ERC-721完全兼容。由于 TRC-721 中的每个代币都是唯一的,因此 TRC-20 标准不足以处理 NFT。

必须实现的接口

每个符合TRC-721标准的智能合约都必须实现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 数量

ownerOf(uint256 _tokenId)

返回指定 NFT 的所有者

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

转让 NFT 的所有权

safeTransferFrom(address _from, address _to, uint256 _tokenId)

转让 NFT 的所有权

transferFrom(address _from, address _to, uint256 _tokenId)

转让一个NFT的所有权(调用者必须确认_to地址是否可以正常接收NFT,否则NFT会丢失)

approve(address _approved, uint256 _tokenId)

授予其他人 NFT 的控制权

setApprovalForAll(address _operator, bool _approved)

由第三方 (_operator) 授予/恢复对所有 NFT 的控制权

getApproved(uint256 _tokenId)

查询某个 NFT 的授权

isApprovedForAll(address _owner, address _operator)

查询operator是否为业主授权地址

supportsInterface(bytes4 interfaceID)

查询是否支持某个接口(interfaceID)

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

Approve 成功后会触发 Approval 事件

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

成功的 transferFrom 和 safeTransferFrom 将触发 Transfer 事件

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

setApprovalForAll 成功后会触发 ApprovalForAll 事件

合约如果需要接受安全转账,必须实现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方法配合使用,当_to为合约地址时,需要调用该方法并检查返回值。 如果返回值不是 bytes4(keccak256("onTRC721Received(address,address,uint256,bytes)")) 将抛出异常。 可以接收 NFT 的智能合约必须实现 TRC721TokenReceiver 接口。

注意

bytes4(keccak256("onTRC721Received(address,address,uint256,bytes))) 的哈希值与以太坊版本 bytes4(keccak256("onERC721Received(address,address,uint256,bytes))) 不同。 对于函数onTRC721Received的返回值,请使用0x5175f878而不是0x150b7a02。

metadata extension接口(可选)

metadata extension接口对于TRC-721智能合约来说是可选的,用户可以查询智能合约的名称以及NFT代表的资产的详细信息。

Solidity

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

name()

返回合约名称

symbol()

返回合约代码

tokenURI(uint256 _tokenId)

返回 _tokenId 对应的外部文件的 URI。 外部资源文件需要包括名称、描述和图片。

enumeration extension接口(可选)

enumeration extension对于TRC-721智能合约是可选的,允许用户的智能合约发布其NFT的完整列表并使其可见。

Solidity

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

totalSupply()

返回 NFT 的总量

tokenByIndex(uint256 _index)

通过_index返回对应的tokenId

tokenOfOwnerByIndex(address _owner, uint256 _index)

返回所有者拥有的 NFT 列表中索引对应的 tokenId

你可能感兴趣的:(Tron)