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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容