Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
382 commits
Select commit Hold shift + click to select a range
8e75f24
Merge remote-tracking branch 'origin/sparrowDom/nativeStaking' into n…
naddison36 Jun 3, 2024
2081919
bumped the deploy script number
naddison36 Jun 3, 2024
6ecf222
Cap the validators a Native Staking Strategy can hold (#2087)
naddison36 Jun 3, 2024
c807e8d
don't format Defender Action code in dist folder
naddison36 Jun 4, 2024
8ab4317
Merge remote-tracking branch 'origin/sparrowDom/nativeStaking' into n…
naddison36 Jun 4, 2024
7f54c94
Deployed latest NativeStakingSSVStrategy contract to Holesky
naddison36 Jun 4, 2024
c4f2a30
Merge remote-tracking branch 'origin/sparrowDom/nativeStaking' into n…
naddison36 Jun 4, 2024
2c90f9f
Fix deployment file
shahthepro Jun 28, 2024
35c4848
Merge remote-tracking branch 'origin/master' into nicka/oeth-arm
naddison36 Jul 3, 2024
7849b81
Merge remote-tracking branch 'origin/nicka/oeth-arm' into nicka/oeth-arm
naddison36 Jul 3, 2024
d8b0fea
updated deploy number for OETH withdrawal queue
naddison36 Jul 3, 2024
a2dada1
Fixed unit tests
naddison36 Jul 3, 2024
532e9b9
Remove stETH from Vault in OETH Withdrawal Queue deployment is not al…
naddison36 Jul 3, 2024
2075e66
Skipping OETH Vault collateral swaps
naddison36 Jul 3, 2024
4ecffac
Skipping OETH whale redeem in fork tests
naddison36 Jul 3, 2024
f2c278b
Fixed spelling in comments of VaultStorage
naddison36 Jul 3, 2024
8f46a2b
Fail CI if any mainnet fork tests fail
naddison36 Jul 3, 2024
2f90d78
Continue with fork tests if any fail but still fail the CI job
naddison36 Jul 3, 2024
bafeff1
Merge remote-tracking branch 'origin/master' into nicka/oeth-arm
naddison36 Jul 3, 2024
faf9521
increment deploy script number
naddison36 Jul 3, 2024
8094ddd
restore Github Actions config
naddison36 Jul 3, 2024
e811fc7
Updated OETHVaultCore comments
naddison36 Jul 4, 2024
0cd7ac2
Upgraded OETH Vault on Holesky to include the withdrawal queue
naddison36 Jul 4, 2024
ba3c28c
Added Vault requestWithdrawal andclaimWithdrawal Hardhat tasks
naddison36 Jul 4, 2024
39d9a86
OETHVaultCore Natspec updates
naddison36 Jul 4, 2024
4e3a58d
Merge remote-tracking branch 'origin/master' into nicka/oeth-arm
naddison36 Jul 5, 2024
99f17e5
Merge remote-tracking branch 'origin/master' into nicka/oeth-arm
naddison36 Jul 10, 2024
f8d4974
Add 30 minute time delay between request and claim from the OETH With…
clement-ux Jul 12, 2024
b277f36
Merge remote-tracking branch 'origin/master' into nicka/oeth-arm
naddison36 Jul 12, 2024
937a084
fix: test expectRevert with new error message
clement-ux Jul 12, 2024
ae24a1f
Merge remote-tracking branch 'origin/nicka/oeth-arm' into nicka/oeth-arm
naddison36 Jul 12, 2024
b07ce57
Fixed unit tests
naddison36 Jul 12, 2024
bdeb1de
Remove stETH and rETH asset from OETH Vault
naddison36 Jul 14, 2024
25f1b53
Skip legacy strategy tests
naddison36 Jul 14, 2024
3049eff
Skiped legacy Oracle prices
naddison36 Jul 14, 2024
3c9c9ec
Skipped Aura price tests
naddison36 Jul 14, 2024
14746bb
Merge remote-tracking branch 'origin/master' into nicka/oeth-arm
naddison36 Jul 14, 2024
b7a6a10
Merge remote-tracking branch 'origin/master' into nicka/oeth-arm
naddison36 Jul 14, 2024
dc58a1c
Remove rETH as an asset from the Vault
naddison36 Jul 15, 2024
5815778
Merge remote-tracking branch 'origin/master' into nicka/oeth-arm
naddison36 Jul 15, 2024
c607bc7
Added call to cacheWETHAssetIndex after stETH is removed from the Vault
naddison36 Jul 15, 2024
33a5678
Updated vault storage diagrams
naddison36 Jul 15, 2024
cbd6764
Added second native staking strategy as the default for WETH
naddison36 Jul 15, 2024
f93f6ab
Add solvency check. (#2131)
clement-ux Jul 15, 2024
d3de400
Fixed claim Natspec now the delay is in place
naddison36 Jul 16, 2024
ecc2773
Changed console debug in assertUpgradeIsSafe to use logger
naddison36 Jul 16, 2024
74875cd
Updated Natspec
naddison36 Jul 16, 2024
5c2ab55
Assert totalValue in withdrawal queue unit tests
naddison36 Jul 16, 2024
cccc048
Merge remote-tracking branch 'origin/nicka/oeth-arm' into nicka/oeth-arm
naddison36 Jul 16, 2024
6ba210a
Fixed prettier
naddison36 Jul 16, 2024
52b2fe3
Asset vault checkBalance of WETH to OETH Vault unit tests
naddison36 Jul 16, 2024
f9e9fdd
_checkBalance and _totalValue on OETH Vault to protect against insolv…
naddison36 Jul 16, 2024
e85f4fb
Override _totalValueInVault in OETH Vault
naddison36 Jul 16, 2024
8c77769
Removed super._totalValue call
naddison36 Jul 16, 2024
6eda2ed
Fix AMO fork tests
naddison36 Jul 16, 2024
1ab9752
Merge remote-tracking branch 'origin/master' into nicka/oeth-arm
naddison36 Jul 16, 2024
28e3ead
Generated latest OETH Vault diagrams
naddison36 Jul 16, 2024
e86fa11
Don't account for WETH reserved for withdrawal during allocation (#2138)
shahthepro Jul 16, 2024
0f383e0
WIP more unit tests
naddison36 Jul 16, 2024
e66dc12
Added more unit tests
naddison36 Jul 16, 2024
d67d1bf
Merge remote-tracking branch 'origin/nicka/oeth-arm' into nicka/oeth-arm
naddison36 Jul 16, 2024
61ead28
Added more withdrawal unit tests
naddison36 Jul 16, 2024
b0cd078
Fix skipped test
shahthepro Jul 16, 2024
5ac4175
Add extra test to OETH ARM. (#2139)
clement-ux Jul 17, 2024
5b61c2b
fix: reduce delay period between request and claim to 10min. (#2140)
clement-ux Jul 17, 2024
975c3c6
Refactor OETH Vault's `_allocate()` (#2141)
naddison36 Jul 17, 2024
5422808
Add extra test for OETH Withdraw Queue (#2142)
clement-ux Jul 17, 2024
839bde2
Override allocate on OETH Vault so _addWithdrawalQueueLiquidity is no…
naddison36 Jul 18, 2024
5d29d45
Skip waiting for confirmation on Tenderly testnets
shahthepro Jul 18, 2024
bb5a82a
Fix unit tests
shahthepro Jul 18, 2024
8bd687b
Merge remote-tracking branch 'origin/master' into nicka/oeth-arm
naddison36 Jul 22, 2024
9135275
Add snapVault hardhat task
naddison36 Jul 25, 2024
cc6f2f3
Updated insolvency unit tests
naddison36 Jul 26, 2024
133ddcb
Added more insolvency unit tests
naddison36 Jul 26, 2024
fb765e1
Fix _totalValue so it handles when vault value is less than the outst…
naddison36 Jul 26, 2024
f3053f2
Added SafeCast to unit128
naddison36 Jul 26, 2024
22b8b2b
Reject redeems and withdrawals if no available assets due to insolvency
naddison36 Jul 26, 2024
e59268f
Redeem to no longer try and get liquidity from the default strategy i…
naddison36 Jul 26, 2024
74afa41
Simplify _wethAvailable
naddison36 Jul 26, 2024
dc46164
refactor of _claimWithdrawal
naddison36 Jul 26, 2024
4f5a57d
Generated latest OETHVaultCore diagram
naddison36 Jul 26, 2024
193ad6d
Fix Slither
naddison36 Jul 26, 2024
f4de2e6
Updated the other _wethAvailable function
naddison36 Jul 26, 2024
b9d5e00
Set Vault buffer to 0.2%
naddison36 Jul 26, 2024
acf271d
Swapped order in deploy script
naddison36 Jul 26, 2024
5978d6d
Simplify _totalValue logic
naddison36 Jul 29, 2024
6b26be9
Merge remote-tracking branch 'origin/master' into nicka/oeth-arm
naddison36 Jul 29, 2024
faa060a
Moved the burn of OETH lower in the request withdrawal
naddison36 Jul 29, 2024
d16970d
Added reentrant protection to addWithdrawalQueueLiquidity
naddison36 Jul 29, 2024
b6a2fbb
Refactor _addWithdrawalQueueLiquidity
naddison36 Jul 29, 2024
0ad9592
Added vault buffer to snapVault Hardhat task
naddison36 Jul 29, 2024
eca6ffa
Merge remote-tracking branch 'origin/master' into nicka/oeth-arm
naddison36 Jul 29, 2024
f9a2c80
M-01 _checkBalance Returns an Incorrect Value During Insolvency (#2166)
naddison36 Aug 6, 2024
f82a54d
Fix vault storage slots (#2167)
naddison36 Aug 6, 2024
b2d3e9c
L-03 Missing Docstrings (#2169)
naddison36 Aug 6, 2024
ecd480f
Fixed Natspec on requestWithdrawal (#2170)
naddison36 Aug 6, 2024
4c746ae
Changed _requestIds param in claimWithdrawals be of type calldata (#2…
naddison36 Aug 6, 2024
7bdbfd8
Remove unnecessary address cast (#2172)
naddison36 Aug 6, 2024
3b66f03
Updated Natpsec of _checkBalance and _checkBalance (#2173)
naddison36 Aug 6, 2024
afb03d8
made constant CLAIM_DELAY public (#2174)
naddison36 Aug 6, 2024
edaf36e
Removed unused MAX_UINT constant (#2175)
naddison36 Aug 6, 2024
3e6b68e
N-08 Variables Are Initialized to Their Default Values (#2176)
naddison36 Aug 6, 2024
49f15a5
Merge remote-tracking branch 'origin/master' into nicka/oz-audit-fixe…
naddison36 Aug 6, 2024
c59070f
Generated latest Vault contract diagrams
naddison36 Aug 6, 2024
b9a2d81
Merge remote-tracking branch 'origin/master' into nicka/oz-audit-fixe…
naddison36 Aug 6, 2024
f69efcb
Merge remote-tracking branch 'origin/master' into nicka/oz-audit-fixe…
naddison36 Aug 19, 2024
59df7d0
Merge remote-tracking branch 'origin/master' into nicka/oz-audit-fixe…
naddison36 Dec 16, 2024
770562a
Merge remote-tracking branch 'origin/master' into nicka/oz-audit-fixe…
naddison36 Dec 17, 2024
dd01806
initial commit
naddison36 Dec 17, 2024
b50f706
WIP Sonic Vault
naddison36 Dec 17, 2024
86a86bb
Changed Sonic Vault to use OETH Base Vault
naddison36 Dec 18, 2024
53b8972
Merge remote-tracking branch 'origin/nicka/oz-audit-fixes-oeth-withdr…
naddison36 Dec 18, 2024
25bdd79
WIP sonic
naddison36 Dec 18, 2024
c87f503
WIP sonic
naddison36 Dec 18, 2024
cde33f0
WIP sonic
naddison36 Dec 18, 2024
40185e4
Got unit tests working
naddison36 Dec 19, 2024
cf12708
Added sonic to node script
naddison36 Dec 19, 2024
908b8d4
WIP Sonic deploy script
naddison36 Dec 19, 2024
3e443f3
Added sonic to storageSlots
naddison36 Dec 20, 2024
ecd9132
Fix getHardhatNetworkProperties
naddison36 Dec 20, 2024
148b08b
Added sonic deployment files
naddison36 Dec 21, 2024
2f01734
Added WETH address on Sonic
naddison36 Dec 29, 2024
965e7f0
Merge remote-tracking branch 'origin/master' into nicka/sonic
naddison36 Dec 29, 2024
d9c4b08
Fix Sonic deployment
naddison36 Dec 29, 2024
648d213
Upgraded Hardhat
naddison36 Dec 30, 2024
2653e2b
More Sonic deployment changes
naddison36 Dec 30, 2024
92a7dd6
More Sonic fixes
naddison36 Dec 30, 2024
cba9f6c
Sonic VaultAdmin override supportAsset as it doesn't have a price pro…
naddison36 Dec 30, 2024
61e9146
Solidity prettier
naddison36 Dec 30, 2024
c36ed17
Skipping reborn attack tests now self-destruct has been removed
naddison36 Dec 30, 2024
7cc647f
fix reborn tests
sparrowDom Dec 30, 2024
e18c53f
re-enable fixed reborn tests
sparrowDom Dec 30, 2024
665f4d0
Added SPC
naddison36 Dec 30, 2024
d199133
fix reborn tests
naddison36 Dec 30, 2024
35ec1dc
Fix Solidity compile
naddison36 Dec 30, 2024
4223599
WIP Sonic Staking Strategy
naddison36 Dec 31, 2024
23e7bad
Prettier
naddison36 Dec 31, 2024
0623f9b
Add supported validators to Sonic Staking Strategy
naddison36 Jan 2, 2025
e6d9102
Added Sonic Staking Strategy to deploy script
naddison36 Jan 2, 2025
a01fe3d
Merge remote-tracking branch 'origin/master' into nicka/sonic
naddison36 Jan 6, 2025
9c9f499
checkBalance now gets stake and pending rewards
naddison36 Jan 7, 2025
44da67a
add basic fork tests for Sonic staking
sparrowDom Jan 7, 2025
d6bffbc
add correct validator ids
sparrowDom Jan 7, 2025
eebc293
Added Defender Relayer for Sonic
naddison36 Jan 8, 2025
6f563aa
Fixed Sonic unit tests
naddison36 Jan 8, 2025
b19829a
More admin unit tests
naddison36 Jan 8, 2025
78eb22a
More unit tests
naddison36 Jan 8, 2025
efd90f8
Update dependencies
naddison36 Jan 8, 2025
f4ed649
bumped solidity-coverage version
naddison36 Jan 8, 2025
086073f
Added Sonic tests to CI
naddison36 Jan 8, 2025
24fd32b
Fix deprecation notices
naddison36 Jan 8, 2025
a3904ce
Formatting of fork-test.sh script
naddison36 Jan 8, 2025
0b51ee9
Slither fixes
naddison36 Jan 8, 2025
e34d6ea
Merge remote-tracking branch 'origin/master' into nicka/sonic
naddison36 Jan 8, 2025
73fc883
Removed unit tests to get gas numbers from CI
naddison36 Jan 8, 2025
a71777d
Merge remote-tracking branch 'origin/master' into nicka/sonic
naddison36 Jan 8, 2025
d61013c
Removed redeem from OSonicVault
naddison36 Jan 8, 2025
ba61428
Removed unused code from SonicValidatorDelegator
naddison36 Jan 8, 2025
d40026f
clean up fork test structure
sparrowDom Jan 8, 2025
a6feef5
improve fork test checks
sparrowDom Jan 8, 2025
afa3285
Merge remote-tracking branch 'origin/master' into nicka/sonic
sparrowDom Jan 8, 2025
96d0cda
add basic withdrawal tests
sparrowDom Jan 8, 2025
6a1a8fd
prettier
naddison36 Jan 8, 2025
bf2c72b
Fix OSonic unit test deploy after merge with yield delegation
naddison36 Jan 8, 2025
98056a1
Added Fixed Rate Dripper for Sonic
naddison36 Jan 9, 2025
d820044
Fixed base unit tests after
naddison36 Jan 9, 2025
8a4bf9b
Added Sonic Zapper
naddison36 Jan 9, 2025
3b08742
Added Sonic contract dependency diagram
naddison36 Jan 9, 2025
4289fa0
Merge remote-tracking branch 'origin/master' into nicka/sonic
sparrowDom Jan 9, 2025
634b096
add withdrawal fork tests
sparrowDom Jan 9, 2025
13b189b
Merge remote-tracking branch 'refs/remotes/origin/nicka/sonic' into n…
sparrowDom Jan 9, 2025
648c99a
add restaking test
sparrowDom Jan 9, 2025
c920ca9
add withdrawal timestamp to the withdrawal struct
sparrowDom Jan 9, 2025
ad65a5a
Updated Sonic token metadata
naddison36 Jan 10, 2025
ce6d461
prettier
naddison36 Jan 10, 2025
c76556a
Update Natspec
naddison36 Jan 10, 2025
5cb03a9
Merge remote-tracking branch 'origin/master' into nicka/sonic
naddison36 Jan 10, 2025
07b1a51
Added VaultValueChecker to Sonic deploy script
naddison36 Jan 10, 2025
3dcdcc0
Added phase 2 contracts to Sonic contract dependencies
naddison36 Jan 10, 2025
2d60303
Generated Sonic contract diagrams
naddison36 Jan 10, 2025
929ec25
Added Sonic fork tests for Zapper
naddison36 Jan 10, 2025
6030ffc
Merge remote-tracking branch 'origin/master' into nicka/sonic
naddison36 Jan 10, 2025
e4ea827
Reduced depositedWSAccountedFor when delegating or withdrawing from t…
naddison36 Jan 10, 2025
5e541b2
Generated latest SonicStakingStrategy
naddison36 Jan 10, 2025
fb3e84b
Added Sonic Vault config to deploy script
naddison36 Jan 10, 2025
f42824c
Added TODO in Sonic addresses
naddison36 Jan 10, 2025
5a07769
Added Sonic Vault fork tests
naddison36 Jan 10, 2025
0b5aea3
remove the depositedWSAccountedFor
sparrowDom Jan 10, 2025
19c60a7
automatically delegate on deposit transaction & add strategist allowa…
sparrowDom Jan 10, 2025
3cbd5c4
add donation attack comment and pick up any S tokens in the withdrawAll
sparrowDom Jan 10, 2025
5a6ff1a
Prettier
naddison36 Jan 12, 2025
7faa3d9
Cleaned up imports
naddison36 Jan 12, 2025
5f99628
Fix Slither
naddison36 Jan 12, 2025
f4b1eca
Updated Natspec
naddison36 Jan 13, 2025
9e3a976
Removed Deposit event from restakeRewards
naddison36 Jan 13, 2025
9af00a3
Fix Natspec
naddison36 Jan 13, 2025
814c392
Fix fork tests after removing Deposit event from restakeRewards
naddison36 Jan 13, 2025
f8612e4
Added deposit and withdraw fork tests for sonic staking strategy
naddison36 Jan 13, 2025
644ea14
Merge remote-tracking branch 'origin/master' into nicka/sonic
naddison36 Jan 13, 2025
d9016ac
Merge remote-tracking branch 'origin/master' into nicka/sonic
naddison36 Jan 13, 2025
4b65279
Added more Sonic fork tests
naddison36 Jan 13, 2025
4d538b1
Generated latest Sonic Strategy diagrams
naddison36 Jan 13, 2025
9bd8fd7
update the solc version to re-enable harhdat tracer
sparrowDom Jan 13, 2025
63c45fa
Added Sonic Admin and Guardian wallets
naddison36 Jan 13, 2025
8a0bf43
Merge remote-tracking branch 'origin/nicka/sonic' into nicka/sonic
naddison36 Jan 13, 2025
01d4cc2
Merge remote-tracking branch 'origin/master' into nicka/sonic
naddison36 Jan 13, 2025
0a89204
Added logger to Sonic staking fork tests
naddison36 Jan 13, 2025
a823daf
update the compiler version to 0.8.28
sparrowDom Jan 13, 2025
c40d117
Merge remote-tracking branch 'refs/remotes/origin/nicka/sonic' into n…
sparrowDom Jan 13, 2025
0e96a2e
Prettier
naddison36 Jan 14, 2025
75aea03
Added Timelock to Sonic deploy script
naddison36 Jan 14, 2025
251df26
deployOnSonic now handles Timelock governance
naddison36 Jan 14, 2025
359d2e4
cleaner max int
sparrowDom Jan 14, 2025
30b54b9
remove unused variable
sparrowDom Jan 14, 2025
621cdbf
simplify casting
sparrowDom Jan 14, 2025
00a7b4f
remove secondary 0 amount check
sparrowDom Jan 14, 2025
ace5c8e
gas optimisation
sparrowDom Jan 14, 2025
4003d21
fix incorrect type
sparrowDom Jan 14, 2025
081d79d
Sonic Deploy 001 - Token and Vault (#2352)
naddison36 Jan 15, 2025
f03de75
add oracle router deployment (#2353)
sparrowDom Jan 15, 2025
a2d6bf9
Revert change to MAX_INT in VaultCore
naddison36 Jan 15, 2025
fe9f5d8
Changed withConfirmation it ignore confirmations to Sonic and Base Te…
naddison36 Jan 16, 2025
e84a3f1
change max int notation
sparrowDom Jan 16, 2025
39475d2
Correct chainId when generating Gnosis file
naddison36 Jan 16, 2025
570f5af
create a separate contract for OSonicOracleRouter
sparrowDom Jan 16, 2025
6859cb8
Hardhat tasks working with Sonic (#2357)
naddison36 Jan 17, 2025
594b45a
correct comment
sparrowDom Jan 17, 2025
da01af5
Merge remote-tracking branch 'refs/remotes/origin/nicka/sonic' into n…
sparrowDom Jan 17, 2025
11f967f
correct comment
sparrowDom Jan 17, 2025
fbc04ff
allow restaking only of the supported validators
sparrowDom Jan 17, 2025
7a92b91
add SonicOracleRouter deployment files (#2355)
sparrowDom Jan 17, 2025
129ce7f
add the ability to claim rewards without restaking them
sparrowDom Jan 18, 2025
91adf81
emit Withdrawal event when funds withdrawn from the strategy
sparrowDom Jan 19, 2025
d2f3431
simplify ACL
sparrowDom Jan 19, 2025
5ef4bf3
Store contract state before executing external calls
sparrowDom Jan 19, 2025
51e25e7
automatically undelegate when unsupporting a validator
sparrowDom Jan 19, 2025
1c09946
remove comment
sparrowDom Jan 19, 2025
08f6c83
remove slither disables
sparrowDom Jan 19, 2025
4ea53b1
add test for confirming rewards being restaked
sparrowDom Jan 19, 2025
58a2fbe
emit withdrawal event when collecting rewards
sparrowDom Jan 20, 2025
77edbe5
Sonic 003 deploy script changed to config vault and upgrade Wrapped O…
naddison36 Jan 20, 2025
f6eb7cb
Merge remote-tracking branch 'origin/nicka/sonic' into nicka/sonic
naddison36 Jan 20, 2025
c76f2b9
remove the non required is validator supported check
sparrowDom Jan 20, 2025
6016b84
add test for depositAll
sparrowDom Jan 21, 2025
33847dd
add some missing tests
sparrowDom Jan 21, 2025
e171d37
add test for not receiving sonic
sparrowDom Jan 21, 2025
7533379
add comment
sparrowDom Jan 21, 2025
f850d72
add trustee address to the deploy script
sparrowDom Jan 21, 2025
0afd827
correct local variable names
sparrowDom Jan 21, 2025
bdf5f4d
Sonic Deploy 003 - Sonic Staking Strategy (#2359)
naddison36 Jan 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions contracts/contracts/interfaces/sonic/INodeDriver.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

interface INodeDriver {
/// Seal epoch. Called BEFORE epoch sealing made by the client itself.
function sealEpoch(
uint256[] calldata offlineTimes,
uint256[] calldata offlineBlocks,
uint256[] calldata uptimes,
uint256[] calldata originatedTxsFee
) external;
}
282 changes: 282 additions & 0 deletions contracts/contracts/interfaces/sonic/ISFC.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,282 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

/**
* @title Special Fee Contract for Sonic network
* @notice The SFC maintains a list of validators and delegators and distributes rewards to them.
* @custom:security-contact [email protected]
*/
interface ISFC {
event CreatedValidator(
uint256 indexed validatorID,
address indexed auth,
uint256 createdEpoch,
uint256 createdTime
);
event Delegated(
address indexed delegator,
uint256 indexed validatorID,
uint256 amount
);
event Undelegated(
address indexed delegator,
uint256 indexed validatorID,
uint256 indexed wrID,
uint256 amount
);
event Withdrawn(
address indexed delegator,
uint256 indexed validatorID,
uint256 indexed wrID,
uint256 amount,
uint256 penalty
);
event ClaimedRewards(
address indexed delegator,
uint256 indexed validatorID,
uint256 rewards
);
event RestakedRewards(
address indexed delegator,
uint256 indexed validatorID,
uint256 rewards
);
event BurntFTM(uint256 amount);
event UpdatedSlashingRefundRatio(
uint256 indexed validatorID,
uint256 refundRatio
);
event RefundedSlashedLegacyDelegation(
address indexed delegator,
uint256 indexed validatorID,
uint256 amount
);

event DeactivatedValidator(
uint256 indexed validatorID,
uint256 deactivatedEpoch,
uint256 deactivatedTime
);
event ChangedValidatorStatus(uint256 indexed validatorID, uint256 status);
event AnnouncedRedirection(address indexed from, address indexed to);

function currentSealedEpoch() external view returns (uint256);

function getEpochSnapshot(uint256 epoch)
external
view
returns (
uint256 endTime,
uint256 endBlock,
uint256 epochFee,
uint256 baseRewardPerSecond,
uint256 totalStake,
uint256 totalSupply
);

function getStake(address delegator, uint256 validatorID)
external
view
returns (uint256);

function getValidator(uint256 validatorID)
external
view
returns (
uint256 status,
uint256 receivedStake,
address auth,
uint256 createdEpoch,
uint256 createdTime,
uint256 deactivatedTime,
uint256 deactivatedEpoch
);

function getValidatorID(address auth) external view returns (uint256);

function getValidatorPubkey(uint256 validatorID)
external
view
returns (bytes memory);

function pubkeyAddressvalidatorID(address pubkeyAddress)
external
view
returns (uint256);

function getWithdrawalRequest(
address delegator,
uint256 validatorID,
uint256 wrID
)
external
view
returns (
uint256 epoch,
uint256 time,
uint256 amount
);

function isOwner() external view returns (bool);

function lastValidatorID() external view returns (uint256);

function minGasPrice() external view returns (uint256);

function owner() external view returns (address);

function renounceOwnership() external;

function slashingRefundRatio(uint256 validatorID)
external
view
returns (uint256);

function stashedRewardsUntilEpoch(address delegator, uint256 validatorID)
external
view
returns (uint256);

function totalActiveStake() external view returns (uint256);

function totalStake() external view returns (uint256);

function totalSupply() external view returns (uint256);

function transferOwnership(address newOwner) external;

function treasuryAddress() external view returns (address);

function version() external pure returns (bytes3);

function currentEpoch() external view returns (uint256);

function updateConstsAddress(address v) external;

function constsAddress() external view returns (address);

function getEpochValidatorIDs(uint256 epoch)
external
view
returns (uint256[] memory);

function getEpochReceivedStake(uint256 epoch, uint256 validatorID)
external
view
returns (uint256);

function getEpochAccumulatedRewardPerToken(
uint256 epoch,
uint256 validatorID
) external view returns (uint256);

function getEpochAccumulatedUptime(uint256 epoch, uint256 validatorID)
external
view
returns (uint256);

function getEpochAverageUptime(uint256 epoch, uint256 validatorID)
external
view
returns (uint32);

function getEpochAccumulatedOriginatedTxsFee(
uint256 epoch,
uint256 validatorID
) external view returns (uint256);

function getEpochOfflineTime(uint256 epoch, uint256 validatorID)
external
view
returns (uint256);

function getEpochOfflineBlocks(uint256 epoch, uint256 validatorID)
external
view
returns (uint256);

function getEpochEndBlock(uint256 epoch) external view returns (uint256);

function rewardsStash(address delegator, uint256 validatorID)
external
view
returns (uint256);

function createValidator(bytes calldata pubkey) external payable;

function getSelfStake(uint256 validatorID) external view returns (uint256);

function delegate(uint256 validatorID) external payable;

function undelegate(
uint256 validatorID,
uint256 wrID,
uint256 amount
) external;

function isSlashed(uint256 validatorID) external view returns (bool);

function withdraw(uint256 validatorID, uint256 wrID) external;

function deactivateValidator(uint256 validatorID, uint256 status) external;

function pendingRewards(address delegator, uint256 validatorID)
external
view
returns (uint256);

function stashRewards(address delegator, uint256 validatorID) external;

function claimRewards(uint256 validatorID) external;

function restakeRewards(uint256 validatorID) external;

function updateSlashingRefundRatio(uint256 validatorID, uint256 refundRatio)
external;

function updateTreasuryAddress(address v) external;

function burnFTM(uint256 amount) external;

function sealEpoch(
uint256[] calldata offlineTime,
uint256[] calldata offlineBlocks,
uint256[] calldata uptimes,
uint256[] calldata originatedTxsFee
) external;

function sealEpochValidators(uint256[] calldata nextValidatorIDs) external;

function initialize(
uint256 sealedEpoch,
uint256 _totalSupply,
address nodeDriver,
address consts,
address _owner
) external;

function setGenesisValidator(
address auth,
uint256 validatorID,
bytes calldata pubkey,
uint256 createdTime
) external;

function setGenesisDelegation(
address delegator,
uint256 validatorID,
uint256 stake
) external;

function updateStakeSubscriberAddress(address v) external;

function stakeSubscriberAddress() external view returns (address);

function setRedirectionAuthorizer(address v) external;

function announceRedirection(address to) external;

function initiateRedirection(address from, address to) external;

function redirect(address to) external;
}
33 changes: 33 additions & 0 deletions contracts/contracts/interfaces/sonic/IWrappedSonic.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IWrappedSonic {
function allowance(address owner, address spender)
external
view
returns (uint256);

function approve(address spender, uint256 value) external returns (bool);

function balanceOf(address account) external view returns (uint256);

function decimals() external view returns (uint8);

function deposit() external payable;

function depositFor(address account) external payable returns (bool);

function totalSupply() external view returns (uint256);

function transfer(address to, uint256 value) external returns (bool);

function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);

function withdraw(uint256 value) external;

function withdrawTo(address account, uint256 value) external returns (bool);
}
69 changes: 69 additions & 0 deletions contracts/contracts/mocks/MockSFC.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./MintableERC20.sol";

contract MockSFC {
error ZeroAmount();
error TransferFailed();

// Mapping of delegator address to validator ID to amount delegated
mapping(address => mapping(uint256 => uint256)) public delegations;
// Mapping of delegator address to validator ID to withdrawal request ID to amount
mapping(address => mapping(uint256 => mapping(uint256 => uint256)))
public withdraws;

function getStake(address delegator, uint256 validatorID)
external
view
returns (uint256)
{
return delegations[delegator][validatorID];
}

function delegate(uint256 validatorID) external payable {
if (msg.value == 0) {
revert ZeroAmount();
}
delegations[msg.sender][validatorID] += msg.value;
}

function undelegate(
uint256 validatorID,
uint256 wrID,
uint256 amount
) external {
require(
delegations[msg.sender][validatorID] >= amount,
"insufficient stake"
);
require(
withdraws[msg.sender][validatorID][wrID] == 0,
"withdrawal request already exists"
);

delegations[msg.sender][validatorID] -= amount;
withdraws[msg.sender][validatorID][wrID] = amount;
}

function withdraw(uint256 validatorID, uint256 wrID) external {
require(withdraws[msg.sender][validatorID][wrID] > 0, "no withdrawal");

(bool sent, ) = msg.sender.call{
value: withdraws[msg.sender][validatorID][wrID]
}("");
if (!sent) {
revert TransferFailed();
}
}

function pendingRewards(address delegator, uint256 validatorID)
external
view
returns (uint256)
{}

function claimRewards(uint256 validatorID) external {}

function restakeRewards(uint256 validatorID) external {}
}
Loading
Loading