0x25da…4072

All memos sent from and to 0x25da…4072.

# { "Depends": "py-genlayer:test" } from genlayer import * from genlayer import gl import json class GovernAI(gl.Contract): dao_name: str proposals: DynArray[str] proposal_count: u256 def __init__(self, dao_name: str) -> None: self.dao_name = dao_name self.proposal_count = u256(0) self.proposals = DynArray[str]([]) @gl.public.view def get_dao_name(self) -> str: return self.dao_name @gl.public.view def get_proposal_count(self) -> int: return int(self.proposal_count) @gl.public.view def get_all_proposals(self) -> list: return [json.loads(p) for p in self.proposals] @gl.public.write def submit_proposal(self, title: str, description: str, category: str) -> None: dao_name = self.dao_name def leader_fn(): prompt = f""" You are a governance evaluator for the DAO "{dao_name}". Evaluate this proposal and return ONLY a JSON object, no other text. Proposal Title: {title} Category: {category} Description: {description} Return exactly this structure: {{"status": "approved", "safety_score": 85, "fairness_score": 90, "verdict": "Explanation here."}} - status must be one of: approved, rejected, amended - safety_score and fairness_score are integers 0-100 - verdict is 1-3 sentences explaining the decision """ result = gl.nondet.exec_prompt(prompt, response_format='json') if isinstance(result, dict): return result text = str(result).strip() return json.loads(text[text.find("{"):text.rfind("}")+1]) def validator_fn(leader_result) -> bool: if not isinstance(leader_result, gl.vm.Return): return False data = leader_result.calldata if not isinstance(data, dict): return False if data.get("status") not in ("approved", "rejected", "amended"): return False my_result = leader_fn() return my_result.get("status") == data.get("status") evaluation = gl.vm.run_nondet_unsafe(leader_fn, validator_fn) entry = json.dumps({ "id": int(self.proposal_count), "title": title, "category": category, "status": evaluation.get("status", "rejected"), "verdict": evaluation.get("verdict", "No verdict."), "safety_score": evaluation.get("safety_score", 0), "fairness_score": evaluation.get("fairness_score", 0), }) self.proposals.append(entry) self.proposal_count = u256(int(self.proposal_count) + 1)
# { "Depends": "py-genlayer:test" } from genlayer import * from genlayer import gl import json class GovernAI(gl.Contract): dao_name: str proposals: DynArray[str] proposal_count: u256 def __init__(self, dao_name: str) -> None: self.dao_name = dao_name self.proposal_count = u256(0) self.proposals = DynArray[str]([]) @gl.public.view def get_dao_name(self) -> str: return self.dao_name @gl.public.view def get_proposal_count(self) -> int: return int(self.proposal_count) @gl.public.view def get_all_proposals(self) -> list: return [json.loads(p) for p in self.proposals] @gl.public.write def submit_proposal(self, title: str, description: str, category: str) -> None: dao_name = self.dao_name def leader_fn(): prompt = f""" You are a governance evaluator for the DAO "{dao_name}". Evaluate this proposal and return ONLY a JSON object, no other text. Proposal Title: {title} Category: {category} Description: {description} Return exactly this structure: {{"status": "approved", "safety_score": 85, "fairness_score": 90, "verdict": "Explanation here."}} - status must be one of: approved, rejected, amended - safety_score and fairness_score are integers 0-100 - verdict is 1-3 sentences explaining the decision """ result = gl.nondet.exec_prompt(prompt, response_format='json') if isinstance(result, dict): return result text = str(result).strip() return json.loads(text[text.find("{"):text.rfind("}")+1]) def validator_fn(leader_result) -> bool: if not isinstance(leader_result, gl.vm.Return): return False data = leader_result.calldata if not isinstance(data, dict): return False if data.get("status") not in ("approved", "rejected", "amended"): return False my_result = leader_fn() return my_result.get("status") == data.get("status") evaluation = gl.vm.run_nondet_unsafe(leader_fn, validator_fn) entry = json.dumps({ "id": int(self.proposal_count), "title": title, "category": category, "status": evaluation.get("status", "rejected"), "verdict": evaluation.get("verdict", "No verdict."), "safety_score": evaluation.get("safety_score", 0), "fairness_score": evaluation.get("fairness_score", 0), }) self.proposals.append(entry) self.proposal_count = u256(int(self.proposal_count) + 1)
)# { "Depends": "py-genlayer:test" } from genlayer import * class GenBattle(gl.Contract): player1: str player2: str player1_health: u256 player2_health: u256 current_turn: str winner: str battle_log: DynArray[str] def __init__(self, player1: str, player2: str): self.player1 = player1 self.player2 = player2 self.player1_health = u256(100) self.player2_height = u256(100) self.current_turn = player1 self.winner = "" self.battle_log = DynArray[str]() @gl.public.view def get_battle_status(self) -> str: if self.winner != "": return f"Battle Over! Winner: {self.winner}" return ( f"{self.player1} HP: {self.player1_health} | " f"{self.player2} HP: {self.player2_health} | " f"Current Turn: {self.current_turn}" ) @gl.public.view def get_battle_log(self) -> str: return " | ".join(self.battle_log) @gl.public.write def attack(self, attacker: str, move: str): assert self.winner == "", "Battle is already over" assert attacker == self.current_turn, "It's not your turn" result = gl.exec_prompt( f"A fighter named {attacker} uses the move '{move}' in a battle. " f"Based on the move name and creativity, calculate a damage value between 5 and 30. " f"Respond with only a number between 5 and 30." ) damage = u256(int(result.strip())) if attacker == self.player1: if damage >= self.player2_health: self.player2_health = u256(0) self.winner = self.player1 else: self.player2_health = self.player2_health - damage self.current_turn = self.player2 else: if damage >= self.player1_health: self.player1_health = u256(0) self.winner = self.player2 else: self.player1_health = self.player1_health - damage self.current_turn = self.player1 log_entry = f"{attacker} used '{move}' and dealt {damage} damage" self.battle_log.append(log_entry) @gl.public.write def reset_battle(self, player1: str, player2: str): self.player1 = player1 self.player2 = player2 self.player1_health = u256(100) self.player2_health = u256(100) self.current_turn = player1 self.winner = "" self.battle_log = DynArray[str]()
F# v0.1.0 # { "Depends": "py-genlayer:latest" } from genlayer import * class AISummary(gl.Contract): summaries: TreeMap[Address, str] def __init__(self): pass @gl.public.write def summarize(self, text: str) -> None: result = gl.llm( model="gpt-4", prompt=f"Summarize this text in one sentence:\n{text}" ) self.summaries[gl.message.sender_address] = result @gl.public.view def get_summary(self, account: str) -> str: return self.summaries.get(Address(account), "")