원클릭으로
plutus-v3-conway
Plutus V3 under Conway: unified context, governance scripts, V2→V3 migration. Conceptual and practical guidance.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Plutus V3 under Conway: unified context, governance scripts, V2→V3 migration. Conceptual and practical guidance.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Read-only wallet state via cardano MCP: balances, addresses, and UTxOs. Requires a configured cardano MCP server.
Retrieve ADAHandle identities ($handle) for the connected wallet via cardano MCP. Read-only.
Query staking delegation status and available rewards via cardano MCP. Read-only, no delegation changes.
Sign and submit pre-built Cardano transactions via cardano MCP. High-risk: requires structured preview and explicit user confirmation.
"Aiken workflows: validators, building, blueprints, .plutus generation. Safe guidance for smart contract development."
"Diagnose cardano-cli: version, era-prefixed vs legacy syntax, network flags. Produces compatibility report."
SOC 직업 분류 기준
| name | plutus-v3-conway |
| description | Plutus V3 under Conway: unified context, governance scripts, V2→V3 migration. Conceptual and practical guidance. |
| allowed-tools | ["Read"] |
| user-invocable | true |
V2: validator(datum, redeemer, context) → Bool
V3: validator(context) → () // datum/redeemer inside context
ScriptContext.scriptInfoSpending - spending UTxOs (existing)
Minting - minting/burning tokens (existing)
Rewarding - withdrawing rewards (existing)
Certifying - stake certificates (existing)
Voting - governance voting (NEW in V3)
Proposing - governance proposals (NEW in V3)
Bool (True/False)() (unit) - failure via error/tracevalidator my_validator {
spend(
datum: Option<MyDatum>,
redeemer: MyRedeemer,
_own_ref: OutputReference,
tx: Transaction,
) {
// Return () on success
// Use expect/fail! for failure
expect Some(d) = datum
d.owner == get_signer(tx)
}
}
validator governance {
vote(
redeemer: VoteRedeemer,
voter: Voter,
tx: Transaction,
) {
// Validate voting logic
True
}
propose(
redeemer: ProposeRedeemer,
tx: Transaction,
) {
// Validate proposal logic
True
}
}
// V2
fn spend(datum: Datum, redeemer: Redeemer, ctx: ScriptContext) -> Bool
// V3
fn spend(datum: Option<Datum>, redeemer: Redeemer, own_ref: OutputReference, tx: Transaction) -> ()
// V3 - datum may be None
spend(datum: Option<Datum>, ...) {
expect Some(d) = datum // Fail if None when you need it
// or
when datum is {
Some(d) -> handle_datum(d)
None -> handle_no_datum()
}
}
// V2 - return Bool
if condition { True } else { False }
// V3 - return () or fail
if condition { () } else { fail @"Condition not met" }
// or use expect
expect condition
use aiken/collection/list
use cardano/transaction.{Transaction, OutputReference}
type Datum {
owner: ByteArray,
}
type Redeemer {
// empty
}
validator simple_lock {
spend(
datum: Option<Datum>,
_redeemer: Redeemer,
_own_ref: OutputReference,
tx: Transaction,
) {
expect Some(d) = datum
list.has(tx.extra_signatories, d.owner)
}
}
use cardano/transaction.{Transaction}
use cardano/governance.{Voter, ProposalProcedure}
validator dao_governance {
vote(
redeemer: Data,
voter: Voter,
tx: Transaction,
) {
// Check voter is authorized
// Check voting rules are followed
True
}
propose(
redeemer: Data,
proposal: ProposalProcedure,
tx: Transaction,
) {
// Check proposer has required stake
// Check proposal format
True
}
}
# Build V3 script with Aiken
aiken build --plutus-version v3
# CLI transaction with V3 script
cardano-cli conway transaction build \
--tx-in-script-file my_script_v3.plutus \
...
shared/PRINCIPLES.mdaiken-smart-contracts (for writing V3 validators)