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  }