Skip to content

JPYC.configureMinter

名称・種別

  • 名称: JPYC.configureMinter
  • 種別: def
  • モジュール: JpycFormalVerification.AccessControl
  • ソース: JpycFormalVerification/AccessControl.lean:153-158
  • 概要: configureMinter(minter,amount):minter を許容額付きで有効化する関数(minterAdmin 限定)。
  • 仕様: 対象外

型シグネチャ

lean
JPYC.State → JPYC.CallContext → JPYC.Address → JPYC.U256 → Except JPYC.Error JPYC.State

StateCallContext・対象 minter・許可量 amount を受け取り、停止中でなければミンター管理者がミンターを登録(または許可量を再設定)する関数です。

和訳 docstring

ミンター minter を有効化し、ミント許可量を amount に設定する(v2/FiatTokenV2.sol:306-316)。

解説

何を述べているか。 FiatTokenV2.configureMinter です。whenNotPausedonlyMinterAdmin を通過した呼び出しが、minters[minter] = trueminterAllowed[minter] = amount の 2 つを設定します。

直感。 「このアドレスは、最大 amount までトークンを発行してよい」というミント枠を与えます。発行を許す相手と上限額を、minterAdmin が決めます。

なぜ安全性に効くか。 発行権限の付与を minterAdmin に集約し(configureMinter_auth)、各ミンターに 上限つき の枠を持たせます。mint はこの minterAllowed を超えて発行できず、発行のたびに枠が減るため、権限を持つ者でも無制限には発行できません。効果は configureMinter_sets が保証します。

図解

Lean ソースコード

lean
/-- `configureMinter(minter, minterAllowedAmount)` — `v2/FiatTokenV2.sol:306-316`. -/
def configureMinter (s : State) (ctx : CallContext) (minter : Address) (amount : U256) :
    Except Error State := do
  whenNotPaused s
  onlyMinterAdmin s ctx
  pure ((s.setMinter minter true).setMinterAllowed minter amount)

対応 Solidity ソースコード

reference/JPYCv2/contracts/v2/FiatTokenV2.sol:306-316

solidity
function configureMinter(address minter, uint256 minterAllowedAmount)
    external
    whenNotPaused
    onlyMinterAdmin
    returns (bool)
{
    minters[minter] = true;
    minterAllowed[minter] = minterAllowedAmount;
    emit MinterConfigured(minter, minterAllowedAmount);
    return true;
}

依存