Skip to content

Commit 7ad1569

Browse files
committed
contracts: register message key when register candidate
1 parent d6791ac commit 7ad1569

File tree

4 files changed

+15
-5
lines changed

4 files changed

+15
-5
lines changed

contracts/solidity/Governance.sol

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,10 @@ contract Governance is IGovernance, ReentrancyGuard, GovProxyUpgradeable {
126126
return candidateList.values();
127127
}
128128

129-
function registerCandidate(uint shareRate) external payable {
129+
function registerCandidate(
130+
uint shareRate,
131+
bytes calldata pubkey
132+
) external payable {
130133
if (tx.origin != msg.sender) revert Errors.OnlyEOA();
131134
if (msg.value != registerFee) revert Errors.InsufficientValue();
132135
if (shareRate > 1000) revert Errors.InvalidShareRate();
@@ -140,6 +143,9 @@ contract Governance is IGovernance, ReentrancyGuard, GovProxyUpgradeable {
140143
// record share rate and balance
141144
shareRateOf[msg.sender] = shareRate;
142145
candidateBalanceOf[msg.sender] = msg.value;
146+
147+
// register message key
148+
IKeyManagement(KEY_MANAGEMENT).registerMessageKey(msg.sender, pubkey);
143149
}
144150

145151
function exitCandidate() external {

contracts/solidity/KeyManagement.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ contract KeyManagement is GovProxyUpgradeable, IKeyManagement {
6969
revert Errors.SideCallNotAllowed();
7070
if (tx.origin != candidate) revert Errors.OnlyEOA();
7171
if (pubkey.length != 65) revert Errors.InvalidMessageKey();
72-
messagePubkeys[msg.sender] = pubkey;
72+
messagePubkeys[candidate] = pubkey;
7373
}
7474

7575
function reshare(bytes calldata pvss, bytes[] calldata messages) external {

contracts/solidity/interfaces/IGovernance.sol

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ interface IGovernance {
1111
event Persist(address[] validators);
1212

1313
// register to be a candidate with gas
14-
function registerCandidate(uint shareRate) external payable;
14+
function registerCandidate(
15+
uint shareRate,
16+
bytes calldata pubkey
17+
) external payable;
1518

1619
// exit candidates and wait for withdraw
1720
function exitCandidate() external;

contracts/solidity/test/MockContract.sol

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ import {IGovernance} from "../interfaces/IGovernance.sol";
66
contract MockContract {
77
function call_registerCandidate(
88
IGovernance governanceAddr,
9-
uint shareRate
9+
uint shareRate,
10+
bytes calldata pubkey
1011
) public payable {
11-
governanceAddr.registerCandidate{value: msg.value}(shareRate);
12+
governanceAddr.registerCandidate{value: msg.value}(shareRate, pubkey);
1213
}
1314
}

0 commit comments

Comments
 (0)