github.com/klaytn/klaytn@v1.12.1/contracts/system_contracts/kip113/KIP113Mock.sol (about) 1 // Copyright 2023 The klaytn Authors 2 // This file is part of the klaytn library. 3 // 4 // The klaytn library is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Lesser General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // The klaytn library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Lesser General Public License for more details. 13 // 14 // You should have received a copy of the GNU Lesser General Public License 15 // along with the klaytn library. If not, see <http://www.gnu.org/licenses/>. 16 17 // SPDX-License-Identifier: LGPL-3.0-only 18 pragma solidity ^0.8.18; 19 20 import "./KIP113.sol"; 21 22 contract KIP113Mock is KIP113 { 23 function register(address addr, bytes calldata publicKey, bytes calldata pop) external override { 24 if (record[addr].publicKey.length == 0) { 25 allNodeIds.push(addr); 26 } 27 record[addr] = BlsPublicKeyInfo(publicKey, pop); 28 } 29 30 function getAllBlsInfo() 31 external 32 view 33 virtual 34 override 35 returns (address[] memory nodeIdList, BlsPublicKeyInfo[] memory pubkeyList) 36 { 37 uint count = allNodeIds.length; 38 39 nodeIdList = new address[](count); 40 pubkeyList = new BlsPublicKeyInfo[](count); 41 42 for (uint i = 0; i < count; i++) { 43 nodeIdList[i] = allNodeIds[i]; 44 pubkeyList[i] = record[allNodeIds[i]]; 45 } 46 return (nodeIdList, pubkeyList); 47 } 48 }