Contract API
SignalCoin
Non-transferable receipt for allocated tokens.
Loading…
Browse documentation
Contract API
Non-transferable receipt for allocated tokens.
Loading…
Contract API
Non-transferable receipt for allocated tokens.
This reference is generated from the repository contracts. Check the deployed version before using a signature or constant. The audit covers a specific source revision.
Source: src/core/SignalCoin.sol
Artifact: out/SignalCoin.sol/SignalCoin.json
Escrows Coin one-for-one as non-transferable sCoin and signals live Strategies.
Every receipt mint adds matching Resonance signal; every burn removes it. No supported operation creates idle receipts. ERC20Votes provides delegation and block-number checkpoints; ERC-2612 permit is not inherited. ERC-20 approvals remain exposed, but all direct receipt transfers revert, including zero-value transfers. Underlying Coin must be standard and non-rebasing. Binding Resonance does not renounce setup ownership; canonical Launchpad setup optionally funds creator-owned signal, then renounces ownership. Owner-funded signal draws Coin from the owner, never from the beneficiary's wallet.
Public ABI: 33 functions, 9 events, 28 custom errors, 1 constructor, 0 receive entries, 0 fallback entries.
constructor(address,string,string,address)constructor(contract IERC20 coin_, string name_, string symbol_, address initialOwner);Creates a launch-derived signal receipt and assigns deployment-time setup ownership. Uses 18 decimals and EIP-712 version 1 for ERC20Votes signatures. Requires a deployed Coin contract and nonzero owner. Renouncing ownership before binding Resonance permanently prevents setup.
Parameters
coin_: Standard ERC-20 Coin token deposited and returned one-for-one in raw units.initialOwner: Deployment-time owner responsible for Resonance binding and optional creator signal funding.name_: Wallet-visible signal receipt name derived from the Coin launch name.symbol_: Wallet-visible signal receipt symbol derived from the Coin launch symbol.CLOCK_MODE()function CLOCK_MODE() external view returns (string arg0);Machine-readable description of the clock as specified in ERC-6372.
addSignal(address,uint256)function addSignal(address strategy, uint256 amount) external;Deposits Coin, mints equal sCoin, and signals one live Strategy atomically. Requires a bound Resonance and caller allowance. Self-delegates when the caller has no delegate; otherwise preserves its choice. Resonance and Bribe checkpoint prior weights before adding signal. Any failure, including a non-manager addition during managed signaling, reverts custody, minting, and signal changes.
Parameters
amount: Nonzero raw units of Coin deposited, sCoin minted, and signal weight assigned.strategy: Auction address identifying the registered live Strategy receiving the complete new signal weight.addSignalMany((address,uint256)[])function addSignalMany(struct SignalCoin.Allocation[] allocations) external;Deposits Coin once, mints equal sCoin once, and signals multiple live Strategies atomically. Rejects an empty array or any zero amount. Duplicate Strategies behave like sequential scalar additions. Amounts are summed with checked arithmetic before custody changes. After the aggregate deposit and mint, each allocation applies the Resonance hook. Any failure, including a non-manager addition during managed signaling, reverts the whole batch: allowance consumption, custody, supply, votes, and earlier allocations.
Parameters
allocations: Nonempty list of live Strategy allocations with nonzero raw-unit amounts.allowance(address,address)function allowance(address owner, address spender) external view returns (uint256 arg0);Returns the remaining number of tokens that spender will be allowed to spend on behalf of owner through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.
approve(address,uint256)function approve(address spender, uint256 value) external returns (bool arg0);See {IERC20-approve}. NOTE: If value is the maximum uint256, the allowance is not updated on transferFrom. This is semantically equivalent to an infinite approval. Requirements: - spender cannot be the zero address.
balanceOf(address)function balanceOf(address account) external view returns (uint256 arg0);Returns the value of tokens owned by account.
checkpoints(address,uint32)function checkpoints(address account, uint32 pos) external view returns (struct Checkpoints.Checkpoint208 arg0);Get the pos-th checkpoint for account.
clock()function clock() external view returns (uint48 arg0);Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.
coin()function coin() external view returns (contract IERC20 arg0);Immutable Coin escrowed one raw unit per raw sCoin unit minted.
decimals()function decimals() external view returns (uint8 arg0);Returns the number of decimals used to get its user representation. For example, if decimals equals 2, a balance of 505 tokens should be displayed to a user as 5.05 (505 / 10 ** 2). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for display purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.
delegate(address)function delegate(address delegatee) external;Delegates votes from the sender to delegatee.
delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)function delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) external;Delegates votes from signer to delegatee.
delegates(address)function delegates(address account) external view returns (address arg0);Returns the delegate that account has chosen.
eip712Domain()function eip712Domain() external view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions);returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.
forceRemoveSignal(address,address,uint256)function forceRemoveSignal(address account, address strategy, uint256 amount) external;Removes signal for an account and returns its escrowed Coin directly to that account. Only the bound Resonance may request this path; it enforces managed-mode owner authorization and revocation. Uses the ordinary removal callback to checkpoint rewards before burning receipts and returning Coin.
Parameters
account: Holder whose signal and receipts are removed and who receives the underlying Coin.amount: Nonzero raw signal units selected by Resonance.strategy: Registered live or killed Strategy from which signal is removed.getPastTotalSupply(uint256)function getPastTotalSupply(uint256 timepoint) external view returns (uint256 arg0);Returns the total supply of votes available at a specific moment in the past. If the clock() is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - timepoint must be in the past. If operating using block numbers, the block must be already mined.
getPastVotes(address,uint256)function getPastVotes(address account, uint256 timepoint) external view returns (uint256 arg0);Returns the amount of votes that account had at a specific moment in the past. If the clock() is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - timepoint must be in the past. If operating using block numbers, the block must be already mined.
getVotes(address)function getVotes(address account) external view returns (uint256 arg0);Returns the current amount of votes that account has.
initializeCreatorSignal(address,address,uint256)function initializeCreatorSignal(address account, address strategy, uint256 amount) external;Funds the creator's initial signal during launch setup using Coin supplied by the owner. Uses ordinary deposit, delegation and Resonance hooks. This helper is callable while owned; Launchpad renounces ownership after the optional creator grant, permanently disabling this setup helper.
Parameters
account: Nonzero recipient of sCoin, voting units and the signal position.amount: Nonzero raw Coin units funded by the caller and assigned to the account.strategy: Registered live Strategy receiving the signal weight.name()function name() external view returns (string arg0);Returns the name of the token.
nonces(address)function nonces(address owner) external view returns (uint256 arg0);Returns the next unused nonce for an address.
numCheckpoints(address)function numCheckpoints(address account) external view returns (uint32 arg0);Get number of checkpoints for account.
owner()function owner() external view returns (address arg0);Returns the address of the current owner.
removeSignal(address,uint256)function removeSignal(address strategy, uint256 amount) external;Removes signal weight, burns equal sCoin, and returns equal Coin to the caller atomically. Resonance first checkpoints revenue and the paired Bribe checkpoints rewards under the prior weight. Exits remain available when strategy is killed. Burning updates ERC20Votes checkpoints before Coin is transferred; any failure reverts the transition. Direct donations do not increase withdrawal entitlement. No cooldown, epoch restriction, or withdrawal lock applies.
Parameters
amount: Nonzero raw units of signal removed, sCoin burned, and Coin returned.strategy: Auction address identifying the Strategy losing signal weight; the Strategy may already be killed.removeSignalMany((address,uint256)[])function removeSignalMany(struct SignalCoin.Allocation[] allocations) external;Removes signal in a batch, burns the total sCoin, and returns equal Coin. Rejects an empty array or any zero amount. Duplicate Strategies behave like sequential scalar removals. Amounts are summed with checked arithmetic before any hook runs. Each allocation executes the canonical removal hook, including for killed Strategies. Then burns the total sCoin and returns equal Coin. Any failure reverts the complete batch.
Parameters
allocations: Nonempty list of Strategy allocations with nonzero raw-unit amounts to remove.renounceOwnership()function renounceOwnership() external;Leaves the contract without owner. It will not be possible to call onlyOwner functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.
resonance()function resonance() external view returns (address arg0);Permanently bound Resonance that applies signal changes, or zero before binding.
setResonance(address)function setResonance(address resonance_) external;Binds the permanent Resonance dependency. Callable only by the current owner and only while resonance is zero. The candidate must be a nonzero deployed contract. Binding has no replacement path and does not transfer or renounce inherited ownership.
Parameters
resonance_: Resonance contract address to bind.symbol()function symbol() external view returns (string arg0);Returns the symbol of the token, usually a shorter version of the name.
totalSupply()function totalSupply() external view returns (uint256 arg0);Returns the value of tokens in existence.
transfer(address,uint256)function transfer(address to, uint256 value) external returns (bool arg0);See {IERC20-transfer}. Requirements: - to cannot be the zero address. - the caller must have a balance of at least value.
transferFrom(address,address,uint256)function transferFrom(address from, address to, uint256 value) external returns (bool arg0);See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-\approve-address-address-uint256-bool-}[approve]. NOTE: Does not update the allowance if the current allowance is the maximum uint256. Requirements: - from and to cannot be the zero address. - from must have a balance of at least value. - the caller must have allowance for from's tokens of at least value.
transferOwnership(address)function transferOwnership(address newOwner) external;Transfers ownership of the contract to a new account (newOwner). Can only be called by the current owner.
Approval(address,address,uint256)event Approval(address indexed owner, address indexed spender, uint256 value);Emitted when the allowance of a spender for an owner is set by a call to {approve}. value is the new allowance.
DelegateChanged(address,address,address)event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);Emitted when an account changes their delegate.
DelegateVotesChanged(address,uint256,uint256)event DelegateVotesChanged(address indexed delegate, uint256 previousVotes, uint256 newVotes);Emitted when a token transfer or delegate change results in changes to a delegate's number of voting units.
EIP712DomainChanged()event EIP712DomainChanged();MAY be emitted to signal that the domain could have changed.
OwnershipTransferred(address,address)event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);No additional NatSpec notice is present in the compiled artifact.
ResonanceSet(address)event ResonanceSet(address indexed resonance);Emitted when this receipt completes its one-time Resonance binding.
Parameters
resonance: Permanently bound Resonance address.SignalWithdrawn(address,address,uint256)event SignalWithdrawn(address indexed account, address indexed strategy, uint256 amount);Emitted after an account removes signal, burns sCoin, and receives matching Coin.
Parameters
account: Signaler whose sCoin was burned and who received the underlying Coin.amount: Equal raw units of signal removed, sCoin burned, and Coin returned.strategy: Auction address identifying the Strategy from which weight was removed; the Strategy may be killed.Signaled(address,address,uint256)event Signaled(address indexed account, address indexed strategy, uint256 amount);Emitted after an account deposits Coin, receives sCoin, and signals a Strategy.
Parameters
account: Signaler whose sCoin balance and Strategy signal increased.amount: Equal raw units of Coin deposited, sCoin minted, and signal weight added.strategy: Auction address identifying the live Strategy that received the signal weight.Transfer(address,address,uint256)event Transfer(address indexed from, address indexed to, uint256 value);Emitted when value tokens are moved from one account (from) to another (to). Note that value may be zero.
CheckpointUnorderedInsertion()error CheckpointUnorderedInsertion();No additional NatSpec notice is present in the compiled artifact.
ECDSAInvalidSignature()error ECDSAInvalidSignature();No additional NatSpec notice is present in the compiled artifact.
ECDSAInvalidSignatureLength(uint256)error ECDSAInvalidSignatureLength(uint256 length);No additional NatSpec notice is present in the compiled artifact.
ECDSAInvalidSignatureS(bytes32)error ECDSAInvalidSignatureS(bytes32 s);No additional NatSpec notice is present in the compiled artifact.
ERC20ExceededSafeSupply(uint256,uint256)error ERC20ExceededSafeSupply(uint256 increasedSupply, uint256 cap);No additional NatSpec notice is present in the compiled artifact.
ERC20InsufficientAllowance(address,uint256,uint256)error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);No additional NatSpec notice is present in the compiled artifact.
ERC20InsufficientBalance(address,uint256,uint256)error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);No additional NatSpec notice is present in the compiled artifact.
ERC20InvalidApprover(address)error ERC20InvalidApprover(address approver);No additional NatSpec notice is present in the compiled artifact.
ERC20InvalidReceiver(address)error ERC20InvalidReceiver(address receiver);No additional NatSpec notice is present in the compiled artifact.
ERC20InvalidSender(address)error ERC20InvalidSender(address sender);No additional NatSpec notice is present in the compiled artifact.
ERC20InvalidSpender(address)error ERC20InvalidSpender(address spender);No additional NatSpec notice is present in the compiled artifact.
ERC5805FutureLookup(uint256,uint48)error ERC5805FutureLookup(uint256 timepoint, uint48 clock);No additional NatSpec notice is present in the compiled artifact.
ERC6372InconsistentClock()error ERC6372InconsistentClock();No additional NatSpec notice is present in the compiled artifact.
InvalidAccountNonce(address,uint256)error InvalidAccountNonce(address account, uint256 currentNonce);No additional NatSpec notice is present in the compiled artifact.
InvalidShortString()error InvalidShortString();No additional NatSpec notice is present in the compiled artifact.
OwnableInvalidOwner(address)error OwnableInvalidOwner(address owner);No additional NatSpec notice is present in the compiled artifact.
OwnableUnauthorizedAccount(address)error OwnableUnauthorizedAccount(address account);No additional NatSpec notice is present in the compiled artifact.
ReentrancyGuardReentrantCall()error ReentrancyGuardReentrantCall();No additional NatSpec notice is present in the compiled artifact.
ResonanceAlreadySet(address)error ResonanceAlreadySet(address resonance);No additional NatSpec notice is present in the compiled artifact.
ResonanceNotSet()error ResonanceNotSet();No additional NatSpec notice is present in the compiled artifact.
SafeCastOverflowedUintDowncast(uint8,uint256)error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);No additional NatSpec notice is present in the compiled artifact.
SafeERC20FailedOperation(address)error SafeERC20FailedOperation(address token);No additional NatSpec notice is present in the compiled artifact.
StringTooLong(string)error StringTooLong(string str);No additional NatSpec notice is present in the compiled artifact.
TransferDisabled()error TransferDisabled();No additional NatSpec notice is present in the compiled artifact.
UnauthorizedResonance(address)error UnauthorizedResonance(address caller);No additional NatSpec notice is present in the compiled artifact.
VotesExpiredSignature(uint256)error VotesExpiredSignature(uint256 expiry);No additional NatSpec notice is present in the compiled artifact.
ZeroAddress()error ZeroAddress();No additional NatSpec notice is present in the compiled artifact.
ZeroAmount()error ZeroAmount();No additional NatSpec notice is present in the compiled artifact.