DeploySEALED

◇╲&□^○*!■&□░&▫~○*╱░**░█○*◆■╱░&!□&□~◆▫█╲■▫$▓■!?╲░■╳◆#@#◇▪▫○◆●██#▒

Transaction ID

Timestamp

Oct 09, 2025, 12:27:36 AM UTC
4mo ago

Block Height

128,833,690

Computation

0

Execution Fee

0.00000774 FLOW

Transaction Summary

Deploy

Contract deployment

Contract deployment

Script Arguments

0nameString
IncrementStakingStrategy
1codeString
import FungibleToken from 0xf233dcee88fe0abe import FlowToken from 0x1654653399040a61 import stFlowToken from 0xd6f80565193ad727 import LiquidStaking from 0xd6f80565193ad727 /// Increment Fi liquid staking strategy /// Stakes FLOW to receive stFLOW access(all) contract IncrementStakingStrategy { access(all) event Staked(flowAmount: UFix64, stFlowReceived: UFix64) access(all) event Unstaked(stFlowAmount: UFix64, flowReceived: UFix64) access(all) event StrategyExecuted(amount: UFix64, result: UFix64) access(self) var totalFlowStaked: UFix64 access(self) var totalStFlowReceived: UFix64 access(all) resource Strategy { access(self) let flowVault: @FlowToken.Vault access(self) let stFlowVault: @stFlowToken.Vault init() { self.flowVault <- FlowToken.createEmptyVault(vaultType: Type<@FlowToken.Vault>()) as! @FlowToken.Vault self.stFlowVault <- stFlowToken.createEmptyVault(vaultType: Type<@stFlowToken.Vault>()) as! @stFlowToken.Vault } /// Execute staking: FLOW -> stFLOW access(all) fun executeStrategy(from: @FlowToken.Vault): @stFlowToken.Vault { pre { from.balance > 0.0: "Cannot stake zero FLOW" } let flowAmount = from.balance // Stake FLOW via LiquidStaking let stFlowVault <- LiquidStaking.stake(flowVault: <-from) let stFlowReceived = stFlowVault.balance IncrementStakingStrategy.totalFlowStaked = IncrementStakingStrategy.totalFlowStaked + flowAmount IncrementStakingStrategy.totalStFlowReceived = IncrementStakingStrategy.totalStFlowReceived + stFlowReceived emit Staked(flowAmount: flowAmount, stFlowReceived: stFlowReceived) emit StrategyExecuted(amount: flowAmount, result: stFlowReceived) return <- stFlowVault } /// Harvest any accrued stFLOW access(all) fun harvest(): @stFlowToken.Vault { let balance = self.stFlowVault.balance if balance > 0.0 { return <- self.stFlowVault.withdraw(amount: balance) as! @stFlowToken.Vault } else { return <- stFlowToken.createEmptyVault(vaultType: Type<@stFlowToken.Vault>()) as! @stFlowToken.Vault } } /// Emergency exit - return all stFLOW access(all) fun emergencyExit(): @stFlowToken.Vault { let balance = self.stFlowVault.balance if balance > 0.0 { return <- self.stFlowVault.withdraw(amount: balance) as! @stFlowToken.Vault } else { return <- stFlowToken.createEmptyVault(vaultType: Type<@stFlowToken.Vault>()) as! @stFlowToken.Vault } } /// Get current balances access(all) fun getBalances(): {String: UFix64} { return { "flow": self.flowVault.balance, "stflow": self.stFlowVault.balance } } } access(all) fun createStrategy(): @Strategy { return <- create Strategy() } access(all) fun getMetrics(): {String: UFix64} { return { "totalFlowStaked": self.totalFlowStaked, "totalStFlowReceived": self.totalStFlowReceived, "exchangeRate": self.totalFlowStaked > 0.0 ? self.totalStFlowReceived / self.totalFlowStaked : 1.0 } } init() { self.totalFlowStaked = 0.0 self.totalStFlowReceived = 0.0 } }

Cadence Script

1transaction(name: String, code: String ) {
2		prepare(signer: auth(AddContract) &Account) {
3			signer.contracts.add(name: name, code: code.utf8 )
4		}
5	}