Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: clean deprecated code #593

Open
wants to merge 52 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
34a4be6
feat: clean deprecated code
cosinlink Aug 27, 2024
73ca43d
feat: clean deprecated code more
cosinlink Aug 27, 2024
e600faa
feat: recover init functions
cosinlink Aug 27, 2024
5cf936a
feat: remove unused code
cosinlink Aug 28, 2024
c6a2f85
feat: remove unused code in stakehub
cosinlink Aug 28, 2024
26663b0
feat: update genesis.json
cosinlink Aug 29, 2024
798904d
feat: remove unused code and add comments
cosinlink Aug 30, 2024
c98ae1d
feat: remove unused code
cosinlink Aug 30, 2024
73d3e7e
feat: remove unused code
cosinlink Aug 30, 2024
c96aec0
feat: add comments
cosinlink Aug 30, 2024
13ea43f
feat: update genesis.json
cosinlink Aug 30, 2024
c1592fb
fix: fix test after code clean up
cosinlink Aug 30, 2024
579bd70
feat: remove unused code
cosinlink Aug 30, 2024
bbc5f23
feat: remove unused code and imports
cosinlink Sep 2, 2024
0e96ece
feat: remove _legacyConsensusAddress and _legacyVoteAddress check
cosinlink Sep 3, 2024
7ed2991
fix: removed deprecated comment
cosinlink Sep 3, 2024
d1a8a56
fix: move events
cosinlink Sep 3, 2024
4db83b8
fix: move events
cosinlink Sep 3, 2024
246a073
feat: deprecate withdrawUnlockToken in TokenHub.sol
cosinlink Sep 3, 2024
23ab1e2
feat: remove unused constants
cosinlink Sep 3, 2024
7f893f5
feat: remove unused code
cosinlink Sep 3, 2024
543f311
feat: remove flattened folder
cosinlink Sep 3, 2024
71bfbc0
fix: fix genesis bytecode generate script and sync genesis.json
cosinlink Sep 3, 2024
f4b5ab3
fix: remove unused code
cosinlink Sep 3, 2024
798651e
feat: sync genesis.json
cosinlink Sep 3, 2024
48e79b2
feat: remove unused tests
cosinlink Sep 4, 2024
7709ada
feat: remove lint ci check
cosinlink Sep 4, 2024
cfd697a
feat: clean unused code in generate.py
pythonberg1997 Sep 5, 2024
0b0e394
feat: lint code and recover ci lint check
cosinlink Sep 5, 2024
348fe40
fix: modify vote slash code to avoid reentry
cosinlink Sep 5, 2024
7d172f2
Revert "fix: modify vote slash code to avoid reentry"
cosinlink Sep 5, 2024
08f7a1f
fix: recover claimMigrationFund in TokenHub
cosinlink Sep 6, 2024
3ad33b1
feat: sync genesis.json
cosinlink Sep 6, 2024
e0346f7
feat: add testnet genesis file
cosinlink Sep 8, 2024
e882dad
feat: add ci check bsc repo bytecode
cosinlink Sep 8, 2024
3cfa57b
chores: modify ci check
cosinlink Sep 8, 2024
64c8f7d
chores: modify ci check
cosinlink Sep 8, 2024
b4591cd
chores: test ci script
cosinlink Sep 8, 2024
8905cf1
chores: test ci script
cosinlink Sep 8, 2024
7e1fa4f
chores: test ci script
cosinlink Sep 8, 2024
0c5637a
chores: test ci script
cosinlink Sep 8, 2024
6cc7f2f
chores: test ci script
cosinlink Sep 8, 2024
5f57952
chores: test ci script
cosinlink Sep 8, 2024
10c1695
chores: test ci script
cosinlink Sep 8, 2024
d8e351f
chores: test ci script
cosinlink Sep 8, 2024
39255e8
chores: test ci script
cosinlink Sep 8, 2024
399bab6
chores: test ci script
cosinlink Sep 8, 2024
031dab5
chores: test ci script
cosinlink Sep 8, 2024
5d82720
chores: test ci script
cosinlink Sep 8, 2024
9132efb
feat: finish ci to check bsc hardfork bytecodes
cosinlink Sep 8, 2024
dd04573
fix: fix check bsc bytecode script
cosinlink Sep 8, 2024
9383bd9
feat: update dev genesis generate command
cosinlink Sep 9, 2024
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
315 changes: 7 additions & 308 deletions contracts/BSCValidatorSet.sol

Large diffs are not rendered by default.

38 changes: 3 additions & 35 deletions contracts/GovHub.sol
Original file line number Diff line number Diff line change
Expand Up @@ -31,26 +31,17 @@ contract GovHub is System, IApplication {
uint8,
bytes calldata msgBytes
) external override onlyCrossChainContract returns (bytes memory responsePayload) {
(ParamChangePackage memory proposal, bool success) = decodeSynPackage(msgBytes);
if (!success) {
return CmnPkg.encodeCommonAckPackage(ERROR_FAIL_DECODE);
}
uint32 resCode = notifyUpdates(proposal);
if (resCode == CODE_OK) {
return new bytes(0);
} else {
return CmnPkg.encodeCommonAckPackage(resCode);
}
revert("deprecated");
}

// should not happen
function handleAckPackage(uint8, bytes calldata) external override onlyCrossChainContract {
require(false, "receive unexpected ack package");
revert("deprecated");
}

// should not happen
function handleFailAckPackage(uint8, bytes calldata) external override onlyCrossChainContract {
require(false, "receive unexpected fail ack package");
revert("deprecated");
}

function updateParam(string calldata key, bytes calldata value, address target) external onlyGovernorTimelock {
Expand All @@ -73,27 +64,4 @@ contract GovHub is System, IApplication {
}
return CODE_OK;
}

//rlp encode & decode function
function decodeSynPackage(bytes memory msgBytes) internal pure returns (ParamChangePackage memory, bool) {
ParamChangePackage memory pkg;

RLPDecode.Iterator memory iter = msgBytes.toRLPItem().iterator();
bool success = false;
uint256 idx = 0;
while (iter.hasNext()) {
if (idx == 0) {
pkg.key = string(iter.next().toBytes());
} else if (idx == 1) {
pkg.value = iter.next().toBytes();
} else if (idx == 2) {
pkg.target = iter.next().toAddress();
success = true;
} else {
break;
}
++idx;
}
return (pkg, success);
}
}
41 changes: 6 additions & 35 deletions contracts/SlashIndicator.sol
Original file line number Diff line number Diff line change
Expand Up @@ -94,22 +94,15 @@ contract SlashIndicator is ISlashIndicator, System, IParamSubscriber, IApplicati
uint8,
bytes calldata
) external override onlyCrossChainContract onlyInit returns (bytes memory) {
require(false, "receive unexpected syn package");
revert("deprecated");
}

function handleAckPackage(uint8, bytes calldata msgBytes) external override onlyCrossChainContract onlyInit {
(CmnPkg.CommonAckPackage memory response, bool ok) = CmnPkg.decodeCommonAckPackage(msgBytes);
if (ok) {
emit knownResponse(response.code);
} else {
emit unKnownResponse(response.code);
}
return;
revert("deprecated");
}

function handleFailAckPackage(uint8, bytes calldata) external override onlyCrossChainContract onlyInit {
emit crashResponse();
return;
revert("deprecated");
}

/*----------------- External func -----------------*/
Expand All @@ -134,16 +127,7 @@ contract SlashIndicator is ISlashIndicator, System, IParamSubscriber, IApplicati
if (indicator.count % felonyThreshold == 0) {
indicator.count = 0;
IBSCValidatorSet(VALIDATOR_CONTRACT_ADDR).felony(validator);
if (IStakeHub(STAKE_HUB_ADDR).consensusToOperator(validator) != address(0)) {
_downtimeSlash(validator, indicator.count, false);
} else {
// send slash msg to bc if validator is not migrated
try ICrossChain(CROSS_CHAIN_CONTRACT_ADDR).sendSynPackage(
SLASH_CHANNELID, encodeSlashPackage(validator), 0
) { } catch (bytes memory reason) {
emit failedFelony(validator, indicator.count, reason);
}
}
_downtimeSlash(validator, indicator.count, false);
} else if (indicator.count % misdemeanorThreshold == 0) {
IBSCValidatorSet(VALIDATOR_CONTRACT_ADDR).misdemeanor(validator);
}
Expand Down Expand Up @@ -284,17 +268,7 @@ contract SlashIndicator is ISlashIndicator, System, IParamSubscriber, IApplicati
}
}

if (IStakeHub(STAKE_HUB_ADDR).voteToOperator(_evidence.voteAddr) != address(0)) {
IStakeHub(STAKE_HUB_ADDR).maliciousVoteSlash(_evidence.voteAddr);
} else {
// send slash msg to bc if the validator not migrated
ICrossChain(CROSS_CHAIN_CONTRACT_ADDR).sendSynPackage(
SLASH_CHANNELID, encodeVoteSlashPackage(_evidence.voteAddr), 0
);

bytes32 voteAddrSlice = BytesLib.toBytes32(_evidence.voteAddr, 0);
emit maliciousVoteSlashed(voteAddrSlice);
}
IStakeHub(STAKE_HUB_ADDR).maliciousVoteSlash(_evidence.voteAddr);
pythonberg1997 marked this conversation as resolved.
Show resolved Hide resolved
}

function submitDoubleSignEvidence(bytes memory header1, bytes memory header2) public onlyInit {
Expand Down Expand Up @@ -343,10 +317,7 @@ contract SlashIndicator is ISlashIndicator, System, IParamSubscriber, IApplicati
* @param validator Who will be jailed
*/
function sendFelonyPackage(address validator) external override(ISlashIndicator) onlyValidatorContract onlyInit {
try ICrossChain(CROSS_CHAIN_CONTRACT_ADDR).sendSynPackage(SLASH_CHANNELID, encodeSlashPackage(validator), 0) { }
catch (bytes memory reason) {
emit failedFelony(validator, 0, reason);
}
emit failedFelony(validator, 0, "deprecated");
}

function _verifyBLSSignature(VoteData memory vote, bytes memory voteAddr) internal view returns (bool) {
Expand Down
101 changes: 5 additions & 96 deletions contracts/StakeHub.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import "./SystemV2.sol";
import "./extension/Protectable.sol";
import "./interface/0.8.x/IBSCValidatorSet.sol";
unclezoro marked this conversation as resolved.
Show resolved Hide resolved
import "./interface/0.8.x/ICrossChain.sol";
import "./interface/0.8.x/IGovToken.sol";
import "./interface/0.8.x/IStakeCredit.sol";
import "./interface/0.8.x/ITokenHub.sol";
import "./lib/0.8.x/RLPDecode.sol";
unclezoro marked this conversation as resolved.
Show resolved Hide resolved
import "./lib/0.8.x/Utils.sol";

Expand Down Expand Up @@ -283,45 +281,15 @@ contract StakeHub is SystemV2, Initializable, Protectable {
uint8,
bytes calldata msgBytes
) external onlyCrossChainContract whenNotPaused enableReceivingFund returns (bytes memory) {
(StakeMigrationPackage memory migrationPkg, bool decodeSuccess) = _decodeMigrationSynPackage(msgBytes);
if (!decodeSuccess) revert InvalidSynPackage();

if (migrationPkg.amount == 0) {
return new bytes(0);
}

// claim fund from TokenHub
bool claimSuccess = ITokenHub(TOKEN_HUB_ADDR).claimMigrationFund(migrationPkg.amount);
if (!claimSuccess) {
emit MigrateFailed(
migrationPkg.operatorAddress,
migrationPkg.delegator,
migrationPkg.amount,
StakeMigrationRespCode.CLAIM_FUND_FAILED
);
return msgBytes;
}

StakeMigrationRespCode respCode = _doMigration(migrationPkg);

if (respCode == StakeMigrationRespCode.MIGRATE_SUCCESS) {
return new bytes(0);
} else {
(bool success,) = TOKEN_HUB_ADDR.call{ value: address(this).balance }("");
if (!success) revert TransferFailed();
emit MigrateFailed(migrationPkg.operatorAddress, migrationPkg.delegator, migrationPkg.amount, respCode);
return msgBytes;
}
revert("deprecated");
unclezoro marked this conversation as resolved.
Show resolved Hide resolved
unclezoro marked this conversation as resolved.
Show resolved Hide resolved
}

function handleAckPackage(uint8 channelId, bytes calldata msgBytes) external onlyCrossChainContract {
// should not happen
emit UnexpectedPackage(channelId, msgBytes);
revert("deprecated");
}

function handleFailAckPackage(uint8 channelId, bytes calldata msgBytes) external onlyCrossChainContract {
// should not happen
emit UnexpectedPackage(channelId, msgBytes);
revert("deprecated");
}

/*----------------- external functions -----------------*/
Expand Down Expand Up @@ -1031,57 +999,6 @@ contract StakeHub is SystemV2, Initializable, Protectable {
}

/*----------------- internal functions -----------------*/
function _decodeMigrationSynPackage(
bytes memory msgBytes
) internal pure returns (StakeMigrationPackage memory, bool) {
StakeMigrationPackage memory migrationPackage;

RLPDecode.Iterator memory iter = msgBytes.toRLPItem().iterator();
bool success = false;
uint256 idx = 0;
while (iter.hasNext()) {
if (idx == 0) {
migrationPackage.operatorAddress = address(uint160(iter.next().toAddress()));
} else if (idx == 1) {
migrationPackage.delegator = address(uint160(iter.next().toAddress()));
} else if (idx == 2) {
migrationPackage.refundAddress = address(uint160(iter.next().toAddress()));
} else if (idx == 3) {
migrationPackage.amount = iter.next().toUint();
success = true;
} else {
break;
}
++idx;
}

return (migrationPackage, success);
}

function _doMigration(StakeMigrationPackage memory migrationPkg) internal returns (StakeMigrationRespCode) {
if (blackList[migrationPkg.delegator] || migrationPkg.delegator == address(0)) {
return StakeMigrationRespCode.INVALID_DELEGATOR;
}

if (!_validatorSet.contains(migrationPkg.operatorAddress)) {
return StakeMigrationRespCode.VALIDATOR_NOT_EXISTED;
}

Validator memory valInfo = _validators[migrationPkg.operatorAddress];
if (valInfo.jailed && migrationPkg.delegator != migrationPkg.operatorAddress) {
return StakeMigrationRespCode.VALIDATOR_JAILED;
}

uint256 shares =
IStakeCredit(valInfo.creditContract).delegate{ value: migrationPkg.amount }(migrationPkg.delegator);
emit Delegated(migrationPkg.operatorAddress, migrationPkg.delegator, shares, migrationPkg.amount);
emit MigrateSuccess(migrationPkg.operatorAddress, migrationPkg.delegator, shares, migrationPkg.amount);

IGovToken(GOV_TOKEN_ADDR).sync(valInfo.creditContract, migrationPkg.delegator);

return StakeMigrationRespCode.MIGRATE_SUCCESS;
}

function _checkMoniker(string memory moniker) internal pure returns (bool) {
bytes memory bz = bytes(moniker);

Expand Down Expand Up @@ -1175,20 +1092,12 @@ contract StakeHub is SystemV2, Initializable, Protectable {
}

function _jailValidator(Validator storage valInfo, uint256 jailUntil) internal {
IBSCValidatorSet(VALIDATOR_CONTRACT_ADDR).removeTmpMigratedValidator(valInfo.consensusAddress);

// keep the last eligible validator
bool isLast = (numOfJailed >= _validatorSet.length() - 1);
if (isLast) {
// If staking channel is closed, then BC-fusion is finished and we should keep the last eligible validator here
if (
!ICrossChain(CROSS_CHAIN_CONTRACT_ADDR).registeredContractChannelMap(
VALIDATOR_CONTRACT_ADDR, STAKING_CHANNELID
)
) {
emit ValidatorEmptyJailed(valInfo.operatorAddress);
return;
}
emit ValidatorEmptyJailed(valInfo.operatorAddress);
unclezoro marked this conversation as resolved.
Show resolved Hide resolved
return;
}

if (jailUntil > valInfo.jailUntil) {
Expand Down
Loading
Loading