The first code generation model for Motoko — the native language of the
Internet Computer blockchain.
1import Map "mo:core/Map";
2import Nat "mo:core/Nat";
3import Principal "mo:core/Principal";
4import Result "mo:core/Result";
5
6persistent actor AMMSwapPool {
7 var reserveA : Nat = 1_000_000;
8 var reserveB : Nat = 1_000_000;
9 var totalFees : Nat = 0;
10
11 func getOutputAmount(inputAmount : Nat, inputReserve : Nat, outputReserve : Nat) : Nat {
12 let numerator = inputAmount * outputReserve * 997;
13 let denominator = (inputReserve * 1000) + (inputAmount * 997);
14 numerator / denominator;
15 };
16
17 public shared(msg) func swap(inputToken : Text, inputAmount : Nat) : async Result.Result<Nat, Text> {
18 if (inputAmount == 0) { return #err("Amount must be > 0") };
19 let outputAmount = getOutputAmount(inputAmount, reserveA, reserveB);
20 let fee = inputAmount * 3 / 1000;
21 totalFees += fee;
22 reserveA += inputAmount;
23 reserveB -= outputAmount;
24 #ok(outputAmount);
25 };
26
27 public query func getReserves() : async { reserveA : Nat; reserveB : Nat } {
28 { reserveA; reserveB };
29 };
30};
1persistent actor EscrowService {
2 public type EscrowState = {
3 #Created; #Funded; #Disputed; #Released; #Refunded;
4 };
5
6 public type Escrow = {
7 id : Nat; buyer : Principal; seller : Principal;
8 amount : Nat; state : EscrowState; createdAt : Int;
9 };
10
11 var escrows = Map.empty<Nat, Escrow>();
12
13 public shared(msg) func createEscrow(seller : Principal, amount : Nat) : async Result.Result<Nat, Text> { ... };
14 public shared(msg) func fundEscrow(id : Nat) : async Result.Result<(), Text> { ... };
15 public shared(msg) func releaseFunds(id : Nat) : async Result.Result<(), Text> { ... };
16 public shared(msg) func dispute(id : Nat) : async Result.Result<(), Text> { ... };
17};
1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3import torch
4
5base_model = "Qwen/Qwen3-Coder-30B-A3B-Instruct"
6adapter = "ky00040/MotokoCoderV0"
7
8tokenizer = AutoTokenizer.from_pretrained(base_model, trust_remote_code=True)
9model = AutoModelForCausalLM.from_pretrained(base_model, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True)
10model = PeftModel.from_pretrained(model, adapter)
11model = model.merge_and_unload()
12
13messages = [
14 {"role": "system", "content": "You are a Motoko expert for the Internet Computer. Write clean, compilable Motoko code using mo:core imports. Use `persistent actor` for actors, Map.empty/add/get with compare functions."},
15 {"role": "user", "content": "Write a Motoko persistent actor for a token balance ledger with transfer, mint, and balance query."}
16]
17
18text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
19inputs = tokenizer(text, return_tensors="pt").to(model.device)
20
21with torch.no_grad():
22 outputs = model.generate(**inputs, max_new_tokens=2048, temperature=0.1, do_sample=True, top_p=0.95)
23
24response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
25print(response)
Motoko is a programming language designed specifically for the Internet Computer blockchain. Key features include:
Apache 2.0 — free for commercial use.