ERC-1450 RTA-Controlled Security Token
Security tokens where the Registered Transfer Agent has exclusive control over transfers for regulatory compliance
ERC-165 interface ids
Computed here as the XOR of the selectors each interface defines.
| IERC1450 | 0x695eecef |
Functions this standard introduces (50)
0xdd62ed3e | allowance(address,address) | view |
0x095ea7b3 | approve(address,uint256) | |
0xfb2e6e77 | batchBurnFrom(address[],uint256[],uint16[],uint256[]) | |
0xfaf97505 | batchMint(address[],uint256[],uint16[],uint256[]) | |
0xeb76d908 | batchTransferFrom(address[],address[],uint256[],uint16[],uint256[]) | |
0x79cc6790 | burnFrom(address,uint256) | |
0x55758f04 | burnFromRegulated(address,uint256,uint16,uint256) | |
0xb860438e | burnFromRegulation(address,uint256,uint16) | |
0x10de2676 | cancelRecovery(uint256) | |
0x7e893159 | changeIssuer(address) | |
0xf282527a | controllerTransfer(address,address,uint256,bytes,bytes) | |
0x313ce567 | decimals() | view |
0x56570571 | executeRecovery(uint256) | |
0x9fa5f50b | getAllDocuments() | view |
0xcad00acc | getDetailedBatchInfo(address) | view |
0xb10d6b41 | getDocument(bytes32) | view |
0xca709a25 | getFeeToken() | view |
0x654c1918 | getHolderRegulations(address) | view |
0xc0ae5607 | getRecoveryDetails(uint256) | view |
0xc946a407 | getRegulationSupply(uint16) | view |
0xd8a4676f | getRequestStatus(uint256) | view |
0x40664496 | getTransferFee(address,address,uint256) | view |
0xcafe4e97 | hasPendingRecovery(address) | view |
0xfce80fb9 | initiateRecovery(address,address,bytes32,string,bytes32) | |
0xe816d97f | isAccountFrozen(address) | view |
0x54b7636e | isKYCVerified(address) | view |
0x86f86c15 | isRegisteredBroker(address) | view |
0xd1132dd6 | isSecurityToken() | pure |
0xfb99b86d | isTransferAgent(address) | view |
0x5547f83f | mint(address,uint256,uint16,uint256) | |
0x469b3c95 | preCheckCompliance(address,address,uint256) | view |
0x903cec95 | preCheckComplianceCallback(bytes,bytes) | pure |
0x73a09dc7 | processTransferRequest(uint256,bool) | |
0x3ec6ef44 | rejectTransferRequest(uint256,uint16,bool) | |
0xc3501848 | removeDocument(bytes32) | |
0x42eba604 | requestTransferWithFee(address,address,uint256,uint256) | |
0xafcd35d4 | requestTransferWithPermit(address,address,uint256,uint256,uint256,uint8,bytes32,bytes32) | |
0xcbe5404f | setAccountFrozen(address,bool) | |
0x7e57c57d | setBrokerStatus(address,bool) | |
0x010648ca | setDocument(bytes32,string,bytes32) | |
0xa4cfc1bc | setFeeParameters(uint8,uint256) | |
0x15cce224 | setFeeToken(address) | |
0x8c6a244c | setTransferAgent(address) | |
0x01ffc9a7 | supportsInterface(bytes4) | view |
0xa9059cbb | transfer(address,uint256) | |
0x23b872dd | transferFrom(address,address,uint256) | |
0xf76d3d22 | transferFromRegulated(address,address,uint256,uint16,uint256) | |
0x5923e87d | updateRequestStatus(uint256,uint8) | |
0x54fd4d50 | version() | pure |
0xdd2cc3f3 | withdrawFees(uint256,address) |
Inherited (4)
0x70a08231 | balanceOf(address) | ERC-20 |
0x06fdde03 | name() | ERC-20 |
0x95d89b41 | symbol() | ERC-20 |
0x18160ddd | totalSupply() | ERC-20 |
Optional extensions (6)
Interfaces the spec defines alongside the core one, which an implementation may or may not carry.
IERC200x36372b07
0x18160ddd | totalSupply() | |
0x70a08231 | balanceOf(address) | |
0xa9059cbb | transfer(address,uint256) | |
0xdd62ed3e | allowance(address,address) | |
0x23b872dd | transferFrom(address,address,uint256) | |
0x095ea7b3 | approve(address,uint256) |
IERC1650x01ffc9a7
0x01ffc9a7 | supportsInterface(bytes4) |
IRTAProxy0x279a11dd
0xf5bc44ca | submitOperation(address,bytes,uint256) | |
0xfc4ce362 | confirmOperation(uint256) | |
0x20ea8d86 | revokeConfirmation(uint256) | |
0x0e70306d | executeOperation(uint256) | |
0xeb12d61e | addSigner(address) | |
0x0e316ab7 | removeSigner(address) | |
0x0d60432e | updateRequiredSignatures(uint256) | |
0x94cf795e | getSigners() | |
0x08aff933 | hasConfirmed(uint256,address) | |
0x202e3924 | getOperation(uint256) | |
0x54fd4d50 | version() |
IBrokerProxy0x10774bf8
0xa01c0eff | submitTransferRequest(address,address,address,uint256,address,uint256) | |
0xdd1bb2a9 | rotateOperator(address) | |
0x6d70f7ae | isOperator(address) |
ISnapshotManager0xfd311e00
0xb3d3d37e | takeSnapshot() | |
0x4ee2cd7e | balanceOfAt(address,uint256) |
ITaxCompliance
0x63987e03 | collectW9(address) | |
0x9d5e332e | calculateWithholding(address,uint256) | |
0xa19165ff | generate1099(address,uint256) | |
0xc0365d89 | generate1042S(address,uint256) | |
0x5762a39c | updateTaxDocumentHash(string,string) |
Events (35)
Topic0 is the keccak256 hash of the signature, which is what a log filter matches on.
0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef | Transfer(address,address,uint256) | |
0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 | Approval(address,address,uint256) | |
0xaf014c0f1e2d7c810cfe4f4ec7c675b9dbd7ad5fd0b058fe94776a447d6f3337 | IssuerChanged(address,address) | |
0x35e89afcbe61fb77843ff4fb292fdc4b00f10009912cacbb48c537c93c84eccb | TransferAgentUpdated(address,address) | |
0xd7a03727fcad9fd7ec89ae4d2f858630c6af554ff70236b834cc92430a2e43c1 | TokensMinted(address,uint256,uint16,uint256,uint256) | |
0x3e12e887d427175142a28b9b6c2740bc2da6904e3c9f86a2aea2a2cc53bb95b7 | TokensBurned(address,uint256,uint16,uint256) | |
0x28bde96161ded46dfa66a5bf95b17d037b74163cc008c943859fd94f37f37ffe | RegulatedTransfer(address,address,uint256,uint16,uint256) | |
0x5c305e799a867c1f9a632629eba8ba08f423e4350397ef18fee1cbb4632df2c5 | TransferRequested(uint256,address,address,uint256,uint256,address) | |
0x624f756b8457d5d02670046b80faa01c08502d2cbb53c3e61c1ef90a6b66cf91 | RequestStatusChanged(uint256,uint8,uint8,uint256) | |
0xeb669e0a01fff40cbe45de851f42334fe70673136abfd91399651b7ae199a07b | TransferExecuted(uint256,address,address,uint256) | |
0xf7061e20a57003952a3a98be55c537d9c3d732e2634c64a2ecac946e8e1c939f | TransferRejected(uint256,uint16,bool) | |
0xec7f25aef06e3f0e65e88e262bb891d91ec94fec8cf5858339abf0907ed04f15 | TransferExpired(uint256,uint256) | |
0xe6d0097a9b1cc017bdb0149144ac0e50e3878286c6592ec91f9f38489d688e01 | FeeParametersUpdated(uint8,uint256) | |
0x91a03e1d689caf891fe531c01e290f7b718f9c6a3af6726d6d837d2b7bd82e67 | FeeTokenUpdated(address,address) | |
0x812bcf6853ebc81dc0a1d2323893eedad6cd086a4398311a699e0a7acdf187b3 | FeesWithdrawn(uint256,address) | |
0x6eeca9bd01d51a74626e1dba78769450e56fe3f29dee5b0f3aee086d5f5ceaaf | BrokerStatusUpdated(address,bool,address) | |
0xea5aca42a051813142500d062c59f19260290a6ce9fcc05f41010c939000e5b9 | AccountFrozen(address,bool,address) | |
0x6bf62b4b9c7b768275122bf70d429efc398a056d669b1efdf6c3976346246d7d | ControllerTransfer(address,address,address,uint256,bytes,bytes) | |
0x876b7cb47aa150b3a5516188b19ed308752ad4d0ae9a702543353b78163f7589 | ControllerRedemption(address,address,uint256,bytes,bytes) | |
0xb4c22d60cd550a815744f04e3ff5278bf19684565ee00e2b084041b6024bd6f6 | DocumentUpdated(bytes32,string,bytes32) | |
0x3d9bba27d3e360d8c80645beed7e991454a8271bf6f269a24f7782be0f0d0654 | DocumentRemoved(bytes32,string,bytes32) | |
0x633611737e849bf540a78184cb988e50bee6df6e503d7318b21905f927930ce5 | RecoveryInitiated(uint256,address,address,uint256) | |
0x33ddda278c137c6fa31b79fc821f65dc0a1fb04b37c61f93d93f3c688c2db609 | RecoveryCancelled(uint256,address) | |
0x47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f24 | SignerAdded(address) | |
0x3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b | SignerRemoved(address) | |
0xe10a705edb4af55d916591ab3ae6d73d13195159890a14a90b10ae1117f9ea37 | RequiredSignaturesUpdated(uint256,uint256) | |
0xd33d2f11d187f3944f69d46c62046264a6e0e07aa0821108fddcb637c26b9560 | OperationSubmitted(uint256,address) | |
0x49b95ce38883cadd696f6aba877a58458fccb95b815ab048952aa16904118c5d | OperationConfirmed(uint256,address) | |
0x0e71fde518036742a4c067068719d7f9e26519ea3aef1213ae9098439bbb38de | OperationExecuted(uint256) | |
0x648f594408894fb5f78bb9ffc3fd6fe4562302666b063288188377f94613fc8f | OperationRevoked(uint256,address) | |
0x0cb95562c0c1c9ac9c0095cb0f9064ba3b004ddf6642f85044d2c2ce062eef4e | OperatorRotated(address,address) | |
0x6b8b5414e3da4d8a3345869ba629fe05d1d64b5a7b75269a010b6e260aa92a13 | RequestSubmitted(uint256,address,address,uint256) | |
0xd5086213e95fe6ba29783b6090dd64c4610e933d6933d73898463c792ca8e424 | TransferRequested(address,address,uint256,uint256) | |
0xb3b962ba1261f3080e7d4f5f2002b0f8338c5bb41cdab72866777fd7b9dc9b9e | TransferApproved(address,address,uint256) | |
0xbfcb6cbd0ff664fa3128426edf9aca99e38c87c47608453d4e3b7328bb1911d6 | TransferRejected(address,address,uint256,uint16) |
Custom errors (19)
0xe450d38c | ERC20InsufficientBalance(address,uint256,uint256) | |
0x96c6fd1e | ERC20InvalidSender(address) | |
0xec442f05 | ERC20InvalidReceiver(address) | |
0xe602df05 | ERC20InvalidApprover(address) | |
0x94280d62 | ERC20InvalidSpender(address) | |
0xfb8f41b2 | ERC20InsufficientAllowance(address,uint256,uint256) | |
0x118cdaa7 | OwnableUnauthorizedAccount(address) | |
0x1e4fbdf7 | OwnableInvalidOwner(address) | |
0xc27fd505 | ERC1450TransferDisabled() | |
0x960b5d0a | ERC1450OnlyRTA() | |
0xacf31384 | ERC1450TransferAgentLocked() | |
0x0f527bea | ERC1450ComplianceCheckFailed(address,address) | |
0xda0357f7 | NotASigner() | |
0xcc2fa558 | AlreadyASigner() | |
0x5f8a9c0b | AlreadyConfirmed() | |
0xe471069a | NotConfirmed() | |
0xe16db4b3 | InsufficientConfirmations() | |
0xb84231a4 | OperationAlreadyExecuted() | |
0x719feac7 | InvalidSignerCount() |
Depends on (3)
Proposals this one names in its requires field.
What the specification covers
Compare with
Parsed from the canonical specification · discussion