testnet
GitHub EN

DefaultStaticPrecompiles

DefaultStaticPrecompiles(stakingKeeper, distributionKeeper, bankKeeper, ...) map[common.Address]vm.PrecompiledContract

이 함수는 마루 네트워크의 완전한 기본 정적 프리컴파일 세트를 구성하고 반환합니다. 이는 표준 코스모스 SDK 프리컴파일(스테이킹, 거버넌스 등)과 마루의 특정 프리컴파일(OKRW, PCL)을 결합하는 중앙 조립 지점입니다. 이 함수는 일반적으로 app.go에서 애플리케이션 설정 중에 한 번 호출되어 EVM 키퍼를 구성합니다.

파라미터

이름 타입 필수 설명
stakingKeeper stakingkeeper.Keeper x/staking 모듈의 키퍼로, 스테이킹 프리컴파일에 필요합니다.
distributionKeeper distributionkeeper.Keeper x/distribution 모듈의 키퍼로, 분배 프리컴파일에 필요합니다.
bankKeeper cmn.BankKeeper x/bank 모듈의 키퍼로, 여러 프리컴파일에서 토큰 작업에 사용됩니다.
okrwKeeper okrwkeeper.Keeper 마루의 x/okrw 모듈 키퍼로, OKRW 프리컴파일이 발행 및 파라미터 접근을 처리하는 데 필요합니다.
pclKeeper *pclkeeper.Keeper 마루의 x/pcl 모듈 키퍼로, PCL 프리컴파일이 규정 준수 정책을 관리하는 데 필요합니다.
... various 거버넌스, 슬래싱, IBC와 같은 표준 프리컴파일을 위한 기타 키퍼들.

반환값

타입: map[common.Address]vm.PrecompiledContract

키가 프리컴파일의 이더리움 주소이고 값이 프리컴파일 로직을 구현하는 Go 객체인 맵을 반환합니다.

예제

app.go에서의 표준 사용법

이 예시는 `DefaultStaticPrecompiles`의 일반적인 호출을 보여줍니다. 애플리케이션 객체(`app`)에서 필요한 모든 키퍼를 전달하여 EVM을 위한 프리컴파일 세트를 구성합니다.

// In app.go, during the EVMKeeper setup...

precompiles := precompiletypes.DefaultStaticPrecompiles(
	app.StakingKeeper,
	app.DistrKeeper,
	app.BankKeeper,
	app.Erc20Keeper,
	app.TransferKeeper,
	app.IBCKeeper.ChannelKeeper,
	app.GovKeeper,
	app.SlashingKeeper,
	app.OkrwKeeper,
	app.PclKeeper,
	app.AccountKeeper,
	app.AppCodec(),
)

evmKeeper := evmkeeper.NewKeeper(
    // ... other params
    precompiles,
    // ... other params
)

프라이빗 네트워크를 위한 커스터마이징 (거버넌스 비활성화)

이 예시는 개발자가 `DefaultStaticPrecompiles`의 본문을 복사하고, 허가형 네트워크에서는 필요하지 않을 수 있는 거버넌스 프리컴파일과 같은 특정 프리컴파일을 제거하여 커스텀 프리컴파일 세트를 만드는 방법을 보여줍니다.

// In a modified defaults.go for a private network
func CustomStaticPrecompiles(...) map[common.Address]vm.PrecompiledContract {
	precompiles := precompiletypes.NewStaticPrecompiles().
		WithPraguePrecompiles().
		WithP256Precompile().
		WithBech32Precompile().
		WithStakingPrecompile(stakingKeeper, bankKeeper, opts...).
		WithBankPrecompile(bankKeeper, erc20Keeper)
		// .WithGovPrecompile(...) is intentionally omitted

	marooPrecompiles := StaticPrecompiles(precompiles).
		WithOkrwPrecompile(bankKeeper, okrwKeeper, accountKeeper).
		WithPclPrecompile(bankKeeper, pclKeeper)

	return map[common.Address]vm.PrecompiledContract(marooPrecompiles)
}
ESC
검색어를 입력하세요