interfaceIHoldable/* is ERC-20 */{enumHoldStatusCode{Nonexistent,Ordered,Executed,ReleasedByNotary,ReleasedByPayee,ReleasedOnExpiration}functionhold(stringcalldataoperationId,addressto,addressnotary,uint256value,uint256timeToExpiration)externalreturns(bool);functionholdFrom(stringcalldataoperationId,addressfrom,addressto,addressnotary,uint256value,uint256timeToExpiration)externalreturns(bool);functionreleaseHold(stringcalldataoperationId)externalreturns(bool);functionexecuteHold(stringcalldataoperationId,uint256value)externalreturns(bool);functionrenewHold(stringcalldataoperationId,uint256timeToExpiration)externalreturns(bool);functionretrieveHoldData(stringcalldataoperationId)externalviewreturns(addressfrom,addressto,addressnotary,uint256value,uint256expiration,HoldStatusCodestatus);functionbalanceOnHold(addressaccount)externalviewreturns(uint256);functionnetBalanceOf(addressaccount)externalviewreturns(uint256);functiontotalSupplyOnHold()externalviewreturns(uint256);functionauthorizeHoldOperator(addressoperator)externalreturns(bool);functionrevokeHoldOperator(addressoperator)externalreturns(bool);functionisHoldOperatorFor(addressoperator,addressfrom)externalviewreturns(bool);eventHoldCreated(addressindexedholdIssuer,stringoperationId,addressfrom,addressto,addressindexednotary,uint256value,uint256expiration);eventHoldExecuted(addressindexedholdIssuer,stringoperationId,addressindexednotary,uint256heldValue,uint256transferredValue);eventHoldReleased(addressindexedholdIssuer,stringoperationId,HoldStatusCodestatus);eventHoldRenewed(addressindexedholdIssuer,stringoperationId,uint256oldExpiration,uint256newExpiration);eventAuthorizedHoldOperator(addressindexedoperator,addressindexedaccount);eventRevokedHoldOperator(addressindexedoperator,addressindexedaccount);}
函数
hold
代表 msg.sender 创建一个有利于收款人的持有。它指定一个公证人,负责执行或释放持有。如果操作 ID 之前已经使用过,该函数必须回滚。
参数
描述
operationId
用于标识持有的唯一 ID
to
收款人的地址,如果执行,代币将被转移到该地址
notary
公证人的地址,他将决定是否执行或释放持有
value
要转移的金额。必须小于或等于付款人的余额。
timeToExpiration
持有到期前的持续时间。如果为“0”,则持有必须是永久的。
holdFrom
代表付款人创建一个有利于收款人的持有。from 账户必须事先批准,通过调用 approveToHold,另一个账户可以代表其发行持有。如果操作 ID 之前已经使用过,该函数必须回滚。
Julio Faura <julio@adhara.io>, Fernando Paris <fer@io.builders>, Daniel Lehrner <daniel@io.builders>, "ERC-1996: 可持有代币 [DRAFT]," Ethereum Improvement Proposals, no. 1996, April 2019. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-1996.