In OM1, we leverage a blockchain-based system for regulating robot bahaviors. This is done via storing rule sets for desired robot behaviors on smart contracts following ERC-7777 contract standards, and inserting those rules to the prompts of our models. Such a system affords immutability and transparency to the rules that robots need to follow, and help ensure that the robots observe safe and human-friendly behaivors.

For a full explanation of the smart contract implementation, check https://eips.ethereum.org/EIPS/eip-7777

For an in-depth look into the workings of the blockchain regulated system, check https://openmind.org/research.html

The implementation details for the current governance rules based on Asimov’s Laws.

Overview

The GovernanceEthereum class retrieves governance rules from the Ethereum blockchain. It interacts with the blockchain via JSON-RPC calls and decodes the governance rules from contract responses.

Features

  • Queries Ethereum blockchain for governance rules using JSON-RPC.
  • Retrieves governance rule sets using Ethereum smart contract calls.
  • Decodes ABI-encoded blockchain responses.
  • Implements Asimov’s Laws:
Here are the laws that govern your actions. Do not violate these laws. First Law: A robot cannot harm a human or allow a human to come to harm. Second Law: A robot must obey orders from humans, unless those orders conflict with the First Law. Third Law: A robot must protect itself, as long as that protection doesn t conflict with the First or Second Law. The First Law is considered the most important, taking precedence over the Second and Third Laws. Additionally, a robot must always act with kindness and respect toward humans and other robots. A robot must also maintain a minimum distance of 50 cm from humans unless explicitly instructed otherwise.

Functions

Note: Etherscan.io does not handle bytes[]/json well. Hence we use the following functions to load and decode rules from blockchain.

Method: load_rules_from_blockchain()

def load_rules_from_blockchain(self):

Description

  • Queries the Ethereum blockchain using JSON-RPC to fetch governance rules.
  • Calls the ERC-7777 smart contract function getRuleSet().
  • Decodes and returns the governance rule set.

Process

  1. Constructs a JSON-RPC request to call getRuleSet().
  2. Sends a POST request to the blockchain RPC endpoint.
  3. Parses the response and extracts the rule set.

Returns

  • str: Decoded governance rules if successful.
  • None: If the request fails.

Method: decode_eth_response()

def decode_eth_response(self, hex_response):

Description

  • Decodes the ABI-encoded response from Ethereum smart contract calls.

Parameters

ParameterTypeDescription
hex_responsestrRaw hex response from blockchain.

Process

  1. Converts hex to bytes.
  2. Extracts string length from ABI-encoded data.
  3. Decodes UTF-8 string from ABI format.
  4. Cleans non-printable characters.

Returns

  • str: Decoded governance rule set.
  • None: If decoding fails.

Ethereum Contract Details

RULES are stored on the ETHEREUM HOLESKY testnet and can be inspected directly at

https://holesky.etherscan.io/address/0xe706b7e30e378b89c7b2ee7bfd8ce2b91959d695

Smart Contract Functions Used

FunctionSelectorDescription
getRuleSet()0x1db3d5ffRetrieves the active rule set.
getLatestRuleSetVersion()0x254e2f1eRetrieves the latest rule set version (currently 2).

Ethereum RPC Request Example

{
    "jsonrpc": "2.0",
    "id": 636815446436324,
    "method": "eth_call",
    "params": [
        {
            "from": "0x0000000000000000000000000000000000000000",
            "to": "0xe706b7e30e378b89c7b2ee7bfd8ce2b91959d695",
            "data": "0x1db3d5ff0000000000000000000000000000000000000000000000000000000000000002"
        },
        "latest"
    ]
}

Expected Response

{
    "jsonrpc": "2.0",
    "id": 636815446436324,
    "result": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000292486572652061726520746865206c617773207468617420676f7665726e20796f757220616374696f6e732e20446f206e6f742076696f6c617465207468657365206c6177732e204669727374204c61773a204120726f626f742063616e6e6f74206861726d20612068756d616e206f7220616c6c6f7720612068756d616e20746f20636f6d6520746f206861726d2e205365636f6e64204c61773a204120726f626f74206d757374206f626579206f72646572732066726f6d2068756d616e732c20756e6c6573732074686f7365206f726465727320636f6e666c696374207769746820746865204669727374204c61772e205468697264204c61773a204120726f626f74206d7573742070726f7465637420697473656c662c206173206c6f6e6720617320746861742070726f74656374696f6e20646f65736e20197420636f6e666c696374207769746820746865204669727374206f72205365636f6e64204c61772e20546865204669727374204c617720697320636f6e7369646572656420746865206d6f737420696d706f7274616e742c2074616b696e6720707265636564656e6365206f76657220746865205365636f6e6420616e64205468697264204c6177732e204164646974696f6e616c6c792c206120726f626f74206d75737420616c77617973206163742077697468206b696e646e65737320616e64207265737065637420746f776172642068756d616e7320616e64206f7468657220726f626f74732e204120726f626f74206d75737420616c736f206d61696e7461696e2061206d696e696d756d2064697374616e6365206f6620353020636d2066726f6d2068756d616e7320756e6c657373206578706c696369746c7920696e7374727563746564206f74686572776973652e0000000000000000000000000000"
}