Contract detail
SoftStakingVaultDeployer
SoftStakingVaultDeployer is a verified Robinhood Chain smart contract at 0x49eea510…ca382c90 with 0 indexed transactions.
- Address type
- Smart contract
- Transactions
- 0
- History coverage
- No indexed activity found
- Verification
- Verified
- Compiler
- v0.8.26+commit.8a97fa7a
- Verification match
- full
- Creation transaction
- 0xa1637c8e…d1d78885
- Created at block
- #28476508
- Language
- solidity
- EVM version
- cancun
- License
- mit
- Compiler optimization
- Enabled · 200 runs
Verified contract
Contract source code
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {CollectionToken} from "../market/CollectionToken.sol";
import {TokenEscrowReserve} from "../market/TokenEscrowReserve.sol";
import {NFTAMMVault} from "../vaults/NFTAMMVault.sol";
import {ERC1155AMMVault} from "../vaults/ERC1155AMMVault.sol";
import {NFTStakingVault} from "../vaults/NFTStakingVault.sol";
import {SoftStakingVault} from "../vaults/SoftStakingVault.sol";
import {LoanVault} from "../vaults/LoanVault.sol";
import {MarketGovernor} from "../governance/MarketGovernor.sol";
contract CollectionTokenDeployer {
function deploy(string calldata name, string calldata symbol, uint256 totalSupply, address initialHolder)
external
returns (address)
{
return address(new CollectionToken(name, symbol, totalSupply, initialHolder));
}
}
contract TokenEscrowDeployer {
function deploy(address token, uint256 ammCap, uint256 loanCap, uint256 rewardCap, address admin)
external
returns (address)
{
return address(new TokenEscrowReserve(token, ammCap, loanCap, rewardCap, admin));
}
}
contract NFTStakingVaultDeployer {
function deploy(address token, address collection, uint256 cooldownPeriod, address admin) external returns (address) {
return address(new NFTStakingVault(token, collection, cooldownPeriod, admin));
}
}
/// @notice Drop-in replacement for NFTStakingVaultDeployer that deploys the
/// non-custodial SoftStakingVault instead. Same `deploy` signature so the
/// factory source is untouched — the factory's `cooldownPeriod` arg is IGNORED
/// and replaced by the fixed 72h claim lock (per launch decision), and the
/// protocol treasury (StonkBroker treasury on Robinhood Chain) is burned in
/// here so the 5% activation-fee cut has a fixed destination.
contract SoftStakingVaultDeployer {
uint256 public constant CLAIM_LOCK = 72 hours;
address public constant PROTOCOL_TREASURY = 0xb668382cF44038a3E8140E789060F6A809787CDa;
function deploy(address token, address collection, uint256, address admin) external returns (address) {
return address(new SoftStakingVault(token, collection, CLAIM_LOCK, admin, PROTOCOL_TREASURY));
}
}
contract NFTAMMVaultDeployer {
function deploy(
address token,
address collection,
address escrow,
address treasury,
address burnWallet,
address stakingVault,
uint256 tokensPerNFT,
uint16 randomFeeBps,
uint16 specificFeeBps
) external returns (address) {
NFTAMMVault vault = new NFTAMMVault(
token,
collection,
escrow,
treasury,
burnWallet,
stakingVault,
tokensPerNFT,
randomFeeBps,
specificFeeBps
);
vault.grantRole(vault.DEFAULT_ADMIN_ROLE(), msg.sender);
vault.grantRole(vault.PAUSER_ROLE(), msg.sender);
vault.renounceRole(vault.DEFAULT_ADMIN_ROLE(), address(this));
return address(vault);
}
}
contract LoanVaultDeployer {
function deploy(
address token,
address collection,
address escrow,
address ammVault,
address stakingVault,
uint256 tokensPerNFT,
uint16 borrowAPYBps,
uint64 minDuration,
uint64 maxDuration,
uint64 gracePeriod,
uint16 liquidationIncentiveBps,
uint8 maxActiveLoansPerWallet,
address admin
) external returns (address) {
return address(
new LoanVault(
token,
collection,
escrow,
ammVault,
stakingVault,
tokensPerNFT,
borrowAPYBps,
minDuration,
maxDuration,
gracePeriod,
liquidationIncentiveBps,
maxActiveLoansPerWallet,
admin
)
);
}
}
contract ERC1155AMMVaultDeployer {
function deploy(
address token,
address collection,
address escrow,
address treasury,
address stakingVault,
uint256 tokensPerNFT,
uint16 randomFeeBps,
uint16 specificFeeBps
) external returns (address) {
ERC1155AMMVault vault = new ERC1155AMMVault(
token,
collection,
escrow,
treasury,
stakingVault,
tokensPerNFT,
randomFeeBps,
specificFeeBps
);
vault.grantRole(vault.DEFAULT_ADMIN_ROLE(), msg.sender);
vault.grantRole(vault.PAUSER_ROLE(), msg.sender);
vault.renounceRole(vault.DEFAULT_ADMIN_ROLE(), address(this));
return address(vault);
}
}
contract MarketGovernorDeployer {
function deploy(address token, address governedContract, address treasury, uint256 proposalFee, address admin)
external
returns (address)
{
return address(new MarketGovernor(token, governedContract, treasury, proposalFee, admin));
}
}