SkillHub

nla-create

v1.0.0

Create a Natural Language Agreement escrow on-chain. Use when the user wants to lock ERC20 tokens in an escrow with a natural language demand that an AI oracle will arbitrate. Handles demand crafting, parameter gathering, and CLI execution.

Sourced from ClawHub, Authored by 疒奀

Installation

Please help me install the skill `nla-create` from SkillHub official store. npx skills add mlegls/nla-create

Create NLA Escrow

Help the user create a blockchain escrow backed by a natural language demand using the nla CLI.

Overview

An NLA escrow locks ERC20 tokens on-chain. Anyone can attempt to fulfill the escrow's natural language demand. An AI oracle evaluates fulfillments and releases the tokens if the demand is satisfied.

Step-by-step instructions

1. Gather requirements

Collect the following from the user conversationally:

Required: - Demand: The natural language condition that must be fulfilled. Help the user craft something clear and unambiguous. - Amount: Number of tokens to escrow (in the token's smallest unit - no automatic decimal conversion). - Token address: ERC20 token contract address (0x...). - Oracle address: Address of the oracle that will arbitrate.

Optional: - Arbitration provider: OpenAI (default), Anthropic, or OpenRouter. - Arbitration model: e.g. gpt-4o-mini (default), claude-3-5-sonnet-20241022, openai/gpt-4o. - Arbitration prompt: Custom prompt template with {{demand}} and {{obligation}} placeholders.

2. Check prerequisites

# Verify CLI is available
which nla

# Check current network
nla network

# Check wallet is configured
nla wallet:show

If no wallet is configured, the user must either: - Run nla wallet:set --private-key <key> - Pass --private-key <key> to the command - Set the PRIVATE_KEY environment variable

3. Help craft the demand

Guide the user to write an effective demand: - Be specific and evaluable by an LLM - Consider: what counts as valid fulfillment? Is the condition verifiable? - For claims requiring real-world knowledge, suggest models with search (Perplexity search is available if the oracle has it configured) - The demand, provider, model, and prompt are all encoded on-chain and publicly visible - never include secrets

4. Execute escrow creation

nla escrow:create 
  --demand "<demand text>" 
  --amount <amount> 
  --token <token_address> 
  --oracle <oracle_address> 
  [--arbitration-provider "<provider>"] 
  [--arbitration-model "<model>"] 
  [--arbitration-prompt "<prompt>"]

5. Record output

The command outputs an escrow UID (0x...). This UID is needed for fulfillment and collection. Present it clearly to the user and explain next steps.

Key details

  • Available networks: anvil (local), sepolia, base-sepolia, mainnet. Switch with nla switch <network>.
  • For local dev, nla dev starts Anvil, deploys contracts, creates mock tokens, and starts the oracle.
  • Public demo oracle on Sepolia: 0xc5c132B69f57dAAAb75d9ebA86cab504b272Ccbc.
  • Default arbitration prompt: ``` Evaluate the fulfillment against the demand and decide whether the demand was validly fulfilled

Demand: {{demand}}

Fulfillment: {{obligation}} ```

Example

nla escrow:create 
  --demand "Provide a valid proof that P != NP" 
  --amount 1000000 
  --token 0xa513e6e4b8f2a923d98304ec87f64353c4d5c853 
  --oracle 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 
  --arbitration-provider "Anthropic" 
  --arbitration-model "claude-3-5-sonnet-20241022"