epoch add

This commit is contained in:
sascha3333 committed 2025-10-09 17:57:55 +02:00
1 parent 74296bb16a
commit 8178311084
2 files changed
+95 -43

No files matched your search

@@ -368,24 +368,6 @@
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "users",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
}
],
"name": "batchUpdateUserStakes",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
@@ -1565,6 +1547,34 @@
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "estDaysRemaining",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "currentTreasuryTvl",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_paybackPercent",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_currentLiability",
"type": "uint256"
}
],
"name": "reenterEpoch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
@@ -2131,8 +2141,8 @@
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615ce180620000e66000396000f3fe608060405234801561001057600080fd5b506004361061036e5760003560e01c8062159da6146103735780630137451814610399578063022914a7146103cf5780630519da3214610402578063092c76101461040b5780630a84096a1461042b5780630a910a6d1461043e5780630c7d63861461044757806313baee5b14610451578063173825d9146104715780631764303d146104845780631aefa2d1146104975780631eb9e53e146104aa5780632ded58aa146104bd5780632e46fed8146104c65780633ba8396e146104ef5780633c92f98d146105125780633e4bc6bc146105345780633f35e7221461053d57806343a32f891461055057806343c7c011146105cb578063441a4175146105de57806348ea286d146105ff5780634a61f1e51461061257806351e624721461063257806351f6cf2f146106455780635811622714610666578063592d1dd11461067957806361d1080b1461069957806362cd6a09146106a157806363624c83146106b857806367a74ddc146106cb5780636ef569a5146106de5780637065cb48146106e757806375060a0b146106fa5780637a0c6dc01461071a5780637bc221ac1461073a5780637e6d99261461074d57806380259e691461077657806380ca0ecf146107895780638129fc1c1461079c57806382b75681146107a457806384e8520a146107b7578063853e0df2146107d75780638939d787146107ea5780638f82818f146107f3578063953d16bf1461081357806396fd111a146108265780639cb6f556146108465780639f3a676c14610859578063a0d46758146108a5578063aaf4b04d146108c5578063ac97b417146108d8578063b6c3dc4c146108eb578063b92a349f1461090b578063bc0bc6ba1461091e578063bd84477d1461093e578063bed9757e146109a6578063c0c07d17146109c7578063c2676603146109da578063c32d3ae2146109e2578063c6b61e4c14610a15578063c7b530b014610a85578063cc573a9114610aa5578063ce13d09014610ae1578063cfcf331914610af4578063d532bdfe14610b14578063d72f23b614610b27578063da1b436414610b3a578063e88f8e6614610b5a578063eacdc5ff14610b6d578063eb44e0a314610b76578063ef5d9ae814610b89578063f2bb563014610ba9578063fe2f50d014610bbc578063fee6018c14610bc5578063ffecf51614610bd8575b600080fd5b610386610381366004615264565b610beb565b6040519081526020015b60405180910390f35b6103c26103a7366004615264565b6004602052600090815260409020546001600160a01b031681565b6040516103909190615286565b6103f26103dd366004615264565b60006020819052908152604090205460ff1681565b6040519015158152602001610390565b61038660075481565b610386610419366004615264565b60066020526000908152604090205481565b61038661043936600461529a565b610c85565b61038660125481565b61044f610dbd565b005b61038661045f366004615264565b600c6020526000908152604090205481565b61044f61047f366004615264565b610f83565b61044f610492366004615308565b611074565b61044f6104a5366004615349565b6112b2565b6103866104b8366004615264565b6112e6565b61038660115481565b6103866104d4366004615264565b6001600160a01b03166000908152601c602052604090205490565b6103f26104fd366004615264565b60016020526000908152604090205460ff1681565b610525610520366004615308565b61132a565b6040516103909392919061539d565b610386601d5481565b61044f61054b36600461529a565b61151b565b61059c61055e36600461529a565b60146020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610390949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61044f6105d9366004615264565b611590565b6105f16105ec366004615349565b6118fe565b6040516103909291906153d3565b61044f61060d366004615264565b611936565b610386610620366004615264565b60186020526000908152604090205481565b61044f610640366004615349565b611ac2565b61065861065336600461529a565b611af6565b6040516103909291906153ec565b61044f6106743660046153fa565b611b32565b610386610687366004615264565b60056020526000908152604090205481565b601b54610386565b6106a9611d9c565b60405161039093929190615448565b61044f6106c63660046154ea565b611fc3565b61044f6106d9366004615568565b6121b1565b61038660165481565b61044f6106f5366004615264565b61220e565b610386610708366004615264565b600a6020526000908152604090205481565b61072d610728366004615264565b6122e0565b604051610390919061559b565b610386610748366004615264565b6123c7565b61038661075b366004615264565b6001600160a01b031660009081526017602052604090205490565b61044f610784366004615349565b61259b565b61038661079736600461529a565b6125cf565b61044f6126db565b61044f6107b2366004615349565b6128be565b6103866107c5366004615264565b600d6020526000908152604090205481565b61044f6107e5366004615349565b612950565b61038660135481565b610386610801366004615264565b60176020526000908152604090205481565b61044f610821366004615349565b6129ce565b6108396108343660046153fa565b612cbc565b6040516103909190615683565b61044f610854366004615349565b612e5b565b61086c610867366004615349565b6130ea565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610390565b6108b86108b336600461529a565b61313d565b60405161039091906156d1565b61044f6108d3366004615349565b61Line truncated
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061036e5760003560e01c8062159da6146103735780630137451814610399578063022914a7146103cf5780630519da3214610402578063092c76101461040b5780630a84096a1461042b5780630a910a6d1461043e5780630c7d63861461044757806313baee5b14610451578063173825d9146104715780631764303d146104845780631aefa2d1146104975780631eb9e53e146104aa5780632ded58aa146104bd5780632e46fed8146104c65780633ba8396e146104ef5780633c92f98d146105125780633e4bc6bc146105345780633f35e7221461053d57806343a32f891461055057806343c7c011146105cb578063441a4175146105de57806348ea286d146105ff5780634a61f1e51461061257806351e624721461063257806351f6cf2f146106455780635811622714610666578063592d1dd11461067957806361d1080b1461069957806362cd6a09146106a157806363624c83146106b857806367a74ddc146106cb5780636ef569a5146106de5780637065cb48146106e757806375060a0b146106fa5780637a0c6dc01461071a5780637bc221ac1461073a5780637e6d99261461074d57806380259e691461077657806380ca0ecf146107895780638129fc1c1461079c57806382b75681146107a457806384e8520a146107b7578063853e0df2146107d75780638939d787146107ea5780638f82818f146107f3578063953d16bf1461081357806396fd111a146108265780639cb6f556146108465780639f3a676c14610859578063a0d46758146108a5578063aaf4b04d146108c5578063ac97b417146108d8578063b6c3dc4c146108eb578063b92a349f1461090b578063bc0bc6ba1461091e578063bd84477d1461093e578063bed9757e146109a6578063c0c07d17146109c7578063c2676603146109da578063c32d3ae2146109e2578063c6b61e4c14610a15578063c7b530b014610a85578063cc573a9114610aa5578063ce13d09014610ae1578063cfcf331914610af4578063d532bdfe14610b14578063d72f23b614610b27578063da1b436414610b3a578063e88f8e6614610b5a578063eacdc5ff14610b6d578063eb44e0a314610b76578063ef5d9ae814610b89578063f2bb563014610ba9578063fe2f50d014610bbc578063fee6018c14610bc5578063ffecf51614610bd8575b600080fd5b610386610381366004615264565b610beb565b6040519081526020015b60405180910390f35b6103c26103a7366004615264565b6004602052600090815260409020546001600160a01b031681565b6040516103909190615286565b6103f26103dd366004615264565b60006020819052908152604090205460ff1681565b6040519015158152602001610390565b61038660075481565b610386610419366004615264565b60066020526000908152604090205481565b61038661043936600461529a565b610c85565b61038660125481565b61044f610dbd565b005b61038661045f366004615264565b600c6020526000908152604090205481565b61044f61047f366004615264565b610f83565b61044f610492366004615308565b611074565b61044f6104a5366004615349565b6112b2565b6103866104b8366004615264565b6112e6565b61038660115481565b6103866104d4366004615264565b6001600160a01b03166000908152601c602052604090205490565b6103f26104fd366004615264565b60016020526000908152604090205460ff1681565b610525610520366004615308565b61132a565b6040516103909392919061539d565b610386601d5481565b61044f61054b36600461529a565b61151b565b61059c61055e36600461529a565b60146020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610390949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61044f6105d9366004615264565b611590565b6105f16105ec366004615349565b6118fe565b6040516103909291906153d3565b61044f61060d366004615264565b611936565b610386610620366004615264565b60186020526000908152604090205481565b61044f610640366004615349565b611ac2565b61065861065336600461529a565b611af6565b6040516103909291906153ec565b61044f6106743660046153fa565b611b32565b610386610687366004615264565b60056020526000908152604090205481565b601b54610386565b6106a9611d9c565b60405161039093929190615448565b61044f6106c63660046154ea565b611fc3565b61044f6106d9366004615568565b6121b1565b61038660165481565b61044f6106f5366004615264565b61220e565b610386610708366004615264565b600a6020526000908152604090205481565b61072d610728366004615264565b6122e0565b604051610390919061559b565b610386610748366004615264565b6123c7565b61038661075b366004615264565b6001600160a01b031660009081526017602052604090205490565b61044f610784366004615349565b61259b565b61038661079736600461529a565b6125cf565b61044f6126db565b61044f6107b2366004615349565b6128be565b6103866107c5366004615264565b600d6020526000908152604090205481565b61044f6107e5366004615349565b612950565b61038660135481565b610386610801366004615264565b60176020526000908152604090205481565b61044f610821366004615349565b6129ce565b6108396108343660046153fa565b612cbc565b6040516103909190615683565b61044f610854366004615349565b612e5b565b61086c610867366004615349565b6130ea565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610390565b6108b86108b336600461529a565b61313d565b60405161039091906156d1565b61044f6108d3366004615349565b6131a1565b61044f6108e6366004615349565b613227565b6108fe6108f936600461529a565b613619565b604051610390919061570b565b61044f610919366004615719565b61372b565b61093161092c366004615349565b6138cc565b604051610390919061574c565b61095161094c36600461529a565b613970565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610390565b6109b96109b436600461529a565b6139Line truncated
"bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615bac80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061036e5760003560e01c8062159da6146103735780630137451814610399578063022914a7146103cf5780630519da3214610402578063092c76101461040b5780630a84096a1461042b5780630a910a6d1461043e5780630c7d63861461044757806313baee5b14610451578063173825d9146104715780631764303d146104845780631aefa2d1146104975780631eb9e53e146104aa5780632ded58aa146104bd5780632e46fed8146104c65780633ba8396e146104ef5780633c92f98d146105125780633e4bc6bc146105345780633f35e7221461053d57806343a32f891461055057806343c7c011146105cb578063441a4175146105de57806348ea286d146105ff5780634a61f1e51461061257806351e624721461063257806351f6cf2f146106455780635811622714610666578063592d1dd11461067957806361d1080b1461069957806362cd6a09146106a157806363624c83146106b857806367a74ddc146106cb5780636ef569a5146106de5780637065cb48146106e757806375060a0b146106fa5780637a0c6dc01461071a5780637bc221ac1461073a5780637e6d99261461074d5780637ee612551461077657806380259e691461078957806380ca0ecf1461079c5780638129fc1c146107af57806382b75681146107b757806384e8520a146107ca578063853e0df2146107ea5780638939d787146107fd5780638f82818f14610806578063953d16bf1461082657806396fd111a146108395780639cb6f556146108595780639f3a676c1461086c578063a0d46758146108b8578063aaf4b04d146108d8578063ac97b417146108eb578063b6c3dc4c146108fe578063b92a349f1461091e578063bc0bc6ba14610931578063bd84477d14610951578063bed9757e146109b9578063c0c07d17146109da578063c2676603146109ed578063c32d3ae2146109f5578063c6b61e4c14610a28578063c7b530b014610a98578063cc573a9114610ab8578063ce13d09014610af4578063cfcf331914610b07578063d532bdfe14610b27578063da1b436414610b3a578063e88f8e6614610b5a578063eacdc5ff14610b6d578063eb44e0a314610b76578063ef5d9ae814610b89578063f2bb563014610ba9578063fe2f50d014610bbc578063fee6018c14610bc5578063ffecf51614610bd8575b600080fd5b610386610381366004615134565b610beb565b6040519081526020015b60405180910390f35b6103c26103a7366004615134565b6004602052600090815260409020546001600160a01b031681565b6040516103909190615156565b6103f26103dd366004615134565b60006020819052908152604090205460ff1681565b6040519015158152602001610390565b61038660075481565b610386610419366004615134565b60066020526000908152604090205481565b61038661043936600461516a565b610c85565b61038660125481565b61044f610dbd565b005b61038661045f366004615134565b600c6020526000908152604090205481565b61044f61047f366004615134565b610f83565b61044f6104923660046151d8565b611074565b61044f6104a5366004615219565b6112b2565b6103866104b8366004615134565b6112e6565b61038660115481565b6103866104d4366004615134565b6001600160a01b03166000908152601c602052604090205490565b6103f26104fd366004615134565b60016020526000908152604090205460ff1681565b6105256105203660046151d8565b61132a565b6040516103909392919061526d565b610386601d5481565b61044f61054b36600461516a565b61151b565b61059c61055e36600461516a565b60146020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610390949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61044f6105d9366004615134565b611590565b6105f16105ec366004615219565b6118fe565b6040516103909291906152a3565b61044f61060d366004615134565b611936565b610386610620366004615134565b60186020526000908152604090205481565b61044f610640366004615219565b611ac2565b61065861065336600461516a565b611af6565b6040516103909291906152bc565b61044f6106743660046152ca565b611b32565b610386610687366004615134565b60056020526000908152604090205481565b601b54610386565b6106a9611d9c565b60405161039093929190615318565b61044f6106c63660046153ba565b611fc3565b61044f6106d9366004615438565b6121b1565b61038660165481565b61044f6106f5366004615134565b61220e565b610386610708366004615134565b600a6020526000908152604090205481565b61072d610728366004615134565b6122e0565b604051610390919061546b565b610386610748366004615134565b6123c7565b61038661075b366004615134565b6001600160a01b031660009081526017602052604090205490565b61044f610784366004615519565b61259b565b61044f610797366004615219565b612725565b6103866107aa36600461516a565b612759565b61044f612865565b61044f6107c5366004615219565b612a48565b6103866107d8366004615134565b600d6020526000908152604090205481565b61044f6107f8366004615219565b612ada565b61038660135481565b610386610814366004615134565b60176020526000908152604090205481565b61044f610834366004615219565b612b58565b61084c6108473660046152ca565b612e3a565b6040516103909190615585565b61044f610867366004615219565b612fd9565b61087f61087a366004615219565b613268565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610390565b6108cb6108c636600461516a565b6132bb565b604051610390919061Line truncated
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061036e5760003560e01c8062159da6146103735780630137451814610399578063022914a7146103cf5780630519da3214610402578063092c76101461040b5780630a84096a1461042b5780630a910a6d1461043e5780630c7d63861461044757806313baee5b14610451578063173825d9146104715780631764303d146104845780631aefa2d1146104975780631eb9e53e146104aa5780632ded58aa146104bd5780632e46fed8146104c65780633ba8396e146104ef5780633c92f98d146105125780633e4bc6bc146105345780633f35e7221461053d57806343a32f891461055057806343c7c011146105cb578063441a4175146105de57806348ea286d146105ff5780634a61f1e51461061257806351e624721461063257806351f6cf2f146106455780635811622714610666578063592d1dd11461067957806361d1080b1461069957806362cd6a09146106a157806363624c83146106b857806367a74ddc146106cb5780636ef569a5146106de5780637065cb48146106e757806375060a0b146106fa5780637a0c6dc01461071a5780637bc221ac1461073a5780637e6d99261461074d5780637ee612551461077657806380259e691461078957806380ca0ecf1461079c5780638129fc1c146107af57806382b75681146107b757806384e8520a146107ca578063853e0df2146107ea5780638939d787146107fd5780638f82818f14610806578063953d16bf1461082657806396fd111a146108395780639cb6f556146108595780639f3a676c1461086c578063a0d46758146108b8578063aaf4b04d146108d8578063ac97b417146108eb578063b6c3dc4c146108fe578063b92a349f1461091e578063bc0bc6ba14610931578063bd84477d14610951578063bed9757e146109b9578063c0c07d17146109da578063c2676603146109ed578063c32d3ae2146109f5578063c6b61e4c14610a28578063c7b530b014610a98578063cc573a9114610ab8578063ce13d09014610af4578063cfcf331914610b07578063d532bdfe14610b27578063da1b436414610b3a578063e88f8e6614610b5a578063eacdc5ff14610b6d578063eb44e0a314610b76578063ef5d9ae814610b89578063f2bb563014610ba9578063fe2f50d014610bbc578063fee6018c14610bc5578063ffecf51614610bd8575b600080fd5b610386610381366004615134565b610beb565b6040519081526020015b60405180910390f35b6103c26103a7366004615134565b6004602052600090815260409020546001600160a01b031681565b6040516103909190615156565b6103f26103dd366004615134565b60006020819052908152604090205460ff1681565b6040519015158152602001610390565b61038660075481565b610386610419366004615134565b60066020526000908152604090205481565b61038661043936600461516a565b610c85565b61038660125481565b61044f610dbd565b005b61038661045f366004615134565b600c6020526000908152604090205481565b61044f61047f366004615134565b610f83565b61044f6104923660046151d8565b611074565b61044f6104a5366004615219565b6112b2565b6103866104b8366004615134565b6112e6565b61038660115481565b6103866104d4366004615134565b6001600160a01b03166000908152601c602052604090205490565b6103f26104fd366004615134565b60016020526000908152604090205460ff1681565b6105256105203660046151d8565b61132a565b6040516103909392919061526d565b610386601d5481565b61044f61054b36600461516a565b61151b565b61059c61055e36600461516a565b60146020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610390949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61044f6105d9366004615134565b611590565b6105f16105ec366004615219565b6118fe565b6040516103909291906152a3565b61044f61060d366004615134565b611936565b610386610620366004615134565b60186020526000908152604090205481565b61044f610640366004615219565b611ac2565b61065861065336600461516a565b611af6565b6040516103909291906152bc565b61044f6106743660046152ca565b611b32565b610386610687366004615134565b60056020526000908152604090205481565b601b54610386565b6106a9611d9c565b60405161039093929190615318565b61044f6106c63660046153ba565b611fc3565b61044f6106d9366004615438565b6121b1565b61038660165481565b61044f6106f5366004615134565b61220e565b610386610708366004615134565b600a6020526000908152604090205481565b61072d610728366004615134565b6122e0565b604051610390919061546b565b610386610748366004615134565b6123c7565b61038661075b366004615134565b6001600160a01b031660009081526017602052604090205490565b61044f610784366004615519565b61259b565b61044f610797366004615219565b612725565b6103866107aa36600461516a565b612759565b61044f612865565b61044f6107c5366004615219565b612a48565b6103866107d8366004615134565b600d6020526000908152604090205481565b61044f6107f8366004615219565b612ada565b61038660135481565b610386610814366004615134565b60176020526000908152604090205481565b61044f610834366004615219565b612b58565b61084c6108473660046152ca565b612e3a565b6040516103909190615585565b61044f610867366004615219565b612fd9565b61087f61087a366004615219565b613268565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610390565b6108cb6108c636600461516a565b6132bb565b60405161039091906155d3565b61044f6108e6366004615219565b61331f565b61044f6108f9366004615219565b6133a5565b61091161090c36600461516a565b613797565b604051610390919061560d565b61044f61092c36600461561b565b6138a9565b61094461093f366004615219565b613a4a565b604051610390919061564e565b61096461095f36600461516a565b613aee565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e08401521515610100830152610120820152610140016103Line truncated
"linkReferences": {},
"deployedLinkReferences": {}
}
+65 -23
View File
@@ -558,33 +558,75 @@ contract CunaFinanceBsc is Initializable, ReentrancyGuardUpgradeable {
// }
// }
/// @notice Batch add to stakes for multiple users
/// @dev Only to be used by bots for edits
/// @param users Array of user addresses
/// @param amounts Array of stake amounts to ADD to a users bigStake
function batchUpdateUserStakes(address[] calldata users, uint256[] calldata amounts) external onlyBot {
require(users.length == amounts.length, "Array length mismatch");
require(users.length > 0, "Empty arrays");
for (uint256 i = 0; i < users.length; i++) {
require(users[i] != address(0), "Invalid address");
require(amounts[i] > 0, "Invalid amount");
// Update totalBigStakes directly (add new)
totalBigStakes = totalBigStakes + amounts[i];
// Add to original stake
userOriginalStake[users[i]] += amounts[i];
// Set last claimed epoch to current epoch
// userLastClaimedEpoch[users[i]] = currentEpochId; DONT Update
/// @notice Re-enter/update the most recent epoch with new values and recalculated unlock percentage
/// @param estDaysRemaining Estimated days remaining for the protocol
/// @param currentTreasuryTvl Current treasury total value locked
/// @param _paybackPercent Percentage multiplier for unlock calculation (scaled by 10000)
/// @param _currentLiability Current total liability amount
function reenterEpoch(uint256 estDaysRemaining, uint256 currentTreasuryTvl, uint256 _paybackPercent, uint256 _currentLiability) external onlyOwner {
require(currentEpochId > 0, "No epochs to update");
// Increment user's big stake
userBigStake[users[i]] += amounts[i];
uint256 epochId = currentEpochId - 1; // Most recent epoch
uint256 unlockPercentage = 0;
// Calculate current ratio
if (_currentLiability > 0) {
uint256 currentRatio = (currentTreasuryTvl * 10000) / _currentLiability;
if (epochId > 0) {
// Calculate unlock percentage BEFORE updating highest ratio
unlockPercentage = calculateUnlockPercentage(currentRatio, _paybackPercent);
}
// Update highest ratio AFTER calculating unlock percentage
if (currentRatio > highestRatio) {
highestRatio = currentRatio;
}
}
// Check that unlock percentage doesn't exceed maximum
require(unlockPercentage <= maxUnlockPercentage, "Unlock percentage high");
// Update the existing epoch entry
epochs[epochId] = Epoch({
estDaysRemaining: estDaysRemaining,
currentTreasuryTvl: currentTreasuryTvl,
totalLiability: _currentLiability,
paybackPercent: _paybackPercent,
unlockPercentage: unlockPercentage,
timestamp: block.timestamp
});
emit EpochEnded(epochId, currentTreasuryTvl, unlockPercentage, _paybackPercent);
}
// /// @notice Batch add to stakes for multiple users
// /// @dev Only to be used by bots for edits
// /// @param users Array of user addresses
// /// @param amounts Array of stake amounts to ADD to a users bigStake
// function batchUpdateUserStakes(address[] calldata users, uint256[] calldata amounts) external onlyBot {
// require(users.length == amounts.length, "Array length mismatch");
// require(users.length > 0, "Empty arrays");
// for (uint256 i = 0; i < users.length; i++) {
// require(users[i] != address(0), "Invalid address");
// require(amounts[i] > 0, "Invalid amount");
// // Update totalBigStakes directly (add new)
// totalBigStakes = totalBigStakes + amounts[i];
// // Add to original stake
// userOriginalStake[users[i]] += amounts[i];
// // Set last claimed epoch to current epoch
// // userLastClaimedEpoch[users[i]] = currentEpochId; DONT Update
// // Increment user's big stake
// userBigStake[users[i]] += amounts[i];
// }
// }
// Additional View Functions
/// @notice Get all withdraw stakes for a user