内置函数
## 简介
Elrond协议有一组内置函数。内置函数是一种特殊的协议端函数,它不需要特定的智能合约地址作为交易的接收者。当通过交易调用这样的函数时,内置处理程序被触发并执行它。
对这些函数的调用被视为built-in function calls
,并被视为不同于其他智能合约调用。
本文档可能会更改,但在撰写本文时,当前的内置函数是:
- ClaimDeveloperRewards
- ChangeOwnerAddress
- 获取用户名
- SaveKeyValue
- ESDTTransfer
- 伊斯特本
- ESDTFreeze
- ESDTUnFreeze
- ESDTWipe
- ESDTPause
- ESDTUnPause
- ESDTSetRole
- ESDTUnSetRole
- ESDTSetLimitedTransfer
- ESDTUnSetLimitedTransfer
- ESDTLocalBurn
- ESDTLocalMint
- ESDTNFTTransfer
- ESDTNFTCreate
- ESDTNFTAddQuantity
- ESDTNFTBurn
- ESDTNFTAddURI
- ESDTNFTUpdateAttributes
- multimesdtnfttransfer
**智能合约所有者将使用此功能,以便索取智能合约调用期间累积的费用。目前,开发者奖励设定为每次智能合约调用费用的 30%。
ClaimDeveloperRewardsTransaction {
Sender: <the owner of the SC>
Receiver: <SC address>
Value: 0
GasLimit: 6_000_000
Data: "ClaimDeveloperRewards"
}
关于参数如何编码的更多细节,请点击这里。
注
当使用智能合约作为bech32Address
时,可以通过获取地址端点查看可用的开发者奖励金额。
ChangeOwnerAddress
当需要新的所有者时,智能合约的所有者将调用该函数。
ChangeOwnerAddressTransaction {
Sender: <the current owner of the SC>
Receiver: <SC address>
Value: 0
GasLimit: 6_000_000
Data: "ChangeOwnerAddress" +
"@" + <new owner address in hexadecimal encoding>
}
关于参数如何编码的更多细节,请点击这里。
set username
SetUserName
用于设置给定地址的用户名。收件人的地址必须是该地址的 DNS 智能合约地址。
SetUserNameTransaction {
Sender: <sender>
Receiver: <DNS address that corresponds to the sender>
Value: 0
GasLimit: 1_200_000
Data: "SetUserName@" +
"@" + <username in hexadecimal encoding>
}
关于参数如何编码的更多细节,点击这里。
save key value
SaveKeyValue
用于在一个地址的存储器下存储给定的键值。更多细节和交易形式已经在这里介绍过了。
ESDT 和 NFT 内置函数
大多数与 ESDT 和 NFT 相关的内置函数已经在 ESDT 和 NFT 章节中描述过了。**