https://dev.flare.network/assets/files/20250101-Coinspect-SmartContractAudit-Flare-Pre-Register&FTSOManagement-v250109-641fe6754b24f18d517711b2565426ce.pdf



FLRM-01 : Quorum is diluted when members are chilled after being added to the management group(관리 그룹 멤버가 된 후 징계 상태가 되어도 권한을 유지하기 때문에, 실제 의결에 필요한 최소 참여 인원 계산에 오류를 발생시키는 문제)

발견 위치

0) 배경: 어디서 무엇을 체크하나?

멤버 추가 직전의 chilled(징계) 검사

// 최근 보상 에폭(=블록 구간) 동안 chilled 이력이 있으면 추가 거절
if (
    voterRegistry.chilledUntilRewardEpochId(bytes20(voter)) +
    addAfterNotChilledEpochs >= currentRewardEpoch
) {
    revert("recently chilled");
}

1) 멤버가 되면 어떤 권한이 생기나?

멤버를 추가하는 코드

function _addMember(
    address _voterToAdd,
    uint256 _currentRewardEpoch
) internal {
    managementGroupMembers.add(_voterToAdd);

    // 마지막 제안 ID 및 추가 시점 기록(메타데이터)
    memberAddedAtProposal[_voterToAdd] = idCounter;
    memberAddedAtRewardEpoch[_voterToAdd] = _currentRewardEpoch;

    delete memberRemovedAtTs[_voterToAdd];
    emit ManagementGroupMemberAdded(_voterToAdd);
}

제안 하는 기능

function _canPropose(address _voter) internal view returns (bool) {
    return managementGroupMembers.index[_voter] != 0;
}