IPcl.getParams
getParams() external view returns (PclParams memory) PCL 모듈 파라미터를 반환합니다. 체인 전역 정책 관리자 주소와 승인된 규제 경로 엔트리포인트 컨트랙트 목록이 포함됩니다. 반환 struct 이름은 PclParams입니다. 여러 프리컴파일 인터페이스를 함께 import할 때 struct 이름 충돌을 피하기 위해 네임스페이스 없는 Params 이름에서 변경되었습니다.
파라미터
이 메서드는 파라미터가 없습니다.
반환값
타입:
PclParams 두 개의 필드를 가진 PclParams 튜플을 반환합니다. address policyAdmin(정책 템플릿 등록과 글로벌 정책 설정 변경 권한을 가진 체인 전역 정책 관리자)과 address[] entrypoints(runOnPcl의 규제 경로 엔트리포인트로 승인된 컨트랙트 목록)로 구성됩니다.
예제
Solidity에서 정책 관리자와 엔트리포인트 조회
인터페이스에서 IPcl, PCL_CONTRACT와 함께 PclParams struct를 import합니다. 이 상수는 0x1000000000000000000000000000000000000005의 프리컴파일에 바인딩됩니다.
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.18;
import { IPcl, PclParams, PCL_CONTRACT } from "@maroo-chain/contracts/precompiles/pcl/IPcl.sol";
contract PclConfigReader {
function readConfig() external view returns (address admin, address[] memory entrypoints) {
PclParams memory p = PCL_CONTRACT.getParams();
return (p.policyAdmin, p.entrypoints);
}
} viem으로 PCL 파라미터 조회
클라이언트 측 ABI는 반환값을 익명 튜플로 표현하므로 struct 이름 변경이 TypeScript에서는 드러나지 않습니다. 규제 경로로 트랜잭션을 라우팅하기 전에 엔트리포인트 목록을 확인하는 용도로 사용합니다.
import { createPublicClient, http } from "viem";
const PCL = "0x1000000000000000000000000000000000000005";
const pclParamsAbi = [{
name: "getParams",
type: "function",
stateMutability: "view",
inputs: [],
outputs: [{
type: "tuple",
components: [
{ name: "policyAdmin", type: "address" },
{ name: "entrypoints", type: "address[]" },
],
}],
}] as const;
const client = createPublicClient({ transport: http("https://rpc-testnet.maroo.io") });
const params = await client.readContract({
address: PCL,
abi: pclParamsAbi,
functionName: "getParams",
});
console.log("policyAdmin:", params.policyAdmin);
console.log("entrypoints:", params.entrypoints);