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.StateState・CallContext・対象 minter・許可量 amount を受け取り、停止中でなければミンター管理者がミンターを登録(または許可量を再設定)する関数です。
和訳 docstring
ミンター minter を有効化し、ミント許可量を amount に設定する(v2/FiatTokenV2.sol:306-316)。
解説
何を述べているか。 FiatTokenV2.configureMinter です。whenNotPaused と onlyMinterAdmin を通過した呼び出しが、minters[minter] = true と minterAllowed[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;
}