From aedfc0374bb22e1dc15687ff32603bd706e1e0e9 Mon Sep 17 00:00:00 2001 From: vvzvlad Date: Sun, 15 Sep 2024 00:42:15 +0300 Subject: [PATCH] add files --- ...2826ac9001fb2e33fdd6379b6aabf449c_abi.json | 836 ++++++++++++++++++ playbook.yml | 214 +++++ 2 files changed, 1050 insertions(+) create mode 100644 0x8d871ef2826ac9001fb2e33fdd6379b6aabf449c_abi.json create mode 100644 playbook.yml diff --git a/0x8d871ef2826ac9001fb2e33fdd6379b6aabf449c_abi.json b/0x8d871ef2826ac9001fb2e33fdd6379b6aabf449c_abi.json new file mode 100644 index 0000000..7c295bc --- /dev/null +++ b/0x8d871ef2826ac9001fb2e33fdd6379b6aabf449c_abi.json @@ -0,0 +1,836 @@ +[ + { + "inputs": [ + { + "internalType": "uint32", + "name": "cooldownStart", + "type": "uint32" + } + ], + "name": "CooldownActive", + "type": "error" + }, + { + "inputs": [], + "name": "GasLimitExceeded", + "type": "error" + }, + { + "inputs": [], + "name": "GasPriceExceeded", + "type": "error" + }, + { + "inputs": [], + "name": "IntervalCompleted", + "type": "error" + }, + { + "inputs": [], + "name": "IntervalMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "enum Manager.NodeStatus", + "name": "status", + "type": "uint8" + } + ], + "name": "NodeNotActivateable", + "type": "error" + }, + { + "inputs": [], + "name": "NodeNotActive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "node", + "type": "address" + }, + { + "internalType": "enum Manager.NodeStatus", + "name": "status", + "type": "uint8" + } + ], + "name": "NodeNotRegisterable", + "type": "error" + }, + { + "inputs": [], + "name": "NodeRespondedAlready", + "type": "error" + }, + { + "inputs": [], + "name": "NotSubscriptionOwner", + "type": "error" + }, + { + "inputs": [], + "name": "SignatureExpired", + "type": "error" + }, + { + "inputs": [], + "name": "SignerMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "SubscriptionCompleted", + "type": "error" + }, + { + "inputs": [], + "name": "SubscriptionNotActive", + "type": "error" + }, + { + "inputs": [], + "name": "SubscriptionNotFound", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "node", + "type": "address" + } + ], + "name": "NodeActivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "node", + "type": "address" + } + ], + "name": "NodeDeactivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "node", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "registerer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "cooldownStart", + "type": "uint32" + } + ], + "name": "NodeRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "id", + "type": "uint32" + } + ], + "name": "SubscriptionCancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "id", + "type": "uint32" + } + ], + "name": "SubscriptionCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "id", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "address", + "name": "node", + "type": "address" + } + ], + "name": "SubscriptionFulfilled", + "type": "event" + }, + { + "inputs": [], + "name": "DELEGATEE_OVERHEAD_CACHED_WEI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DELEGATEE_OVERHEAD_CREATE_WEI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DELIVERY_OVERHEAD_WEI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EIP712_NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EIP712_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "activateNode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "subscriptionId", + "type": "uint32" + } + ], + "name": "cancelSubscription", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cooldown", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "containerId", + "type": "string" + }, + { + "internalType": "bytes", + "name": "inputs", + "type": "bytes" + }, + { + "internalType": "uint48", + "name": "maxGasPrice", + "type": "uint48" + }, + { + "internalType": "uint32", + "name": "maxGasLimit", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "frequency", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "period", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "redundancy", + "type": "uint16" + } + ], + "name": "createSubscription", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "nonce", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "expiry", + "type": "uint32" + }, + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint32", + "name": "activeAt", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "period", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "frequency", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "redundancy", + "type": "uint16" + }, + { + "internalType": "uint48", + "name": "maxGasPrice", + "type": "uint48" + }, + { + "internalType": "uint32", + "name": "maxGasLimit", + "type": "uint32" + }, + { + "internalType": "string", + "name": "containerId", + "type": "string" + }, + { + "internalType": "bytes", + "name": "inputs", + "type": "bytes" + } + ], + "internalType": "struct Coordinator.Subscription", + "name": "sub", + "type": "tuple" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "createSubscriptionDelegatee", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "deactivateNode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "delegateCreatedIds", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "subscriptionId", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "deliveryInterval", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "input", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "output", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "proof", + "type": "bytes" + } + ], + "name": "deliverCompute", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "nonce", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "expiry", + "type": "uint32" + }, + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint32", + "name": "activeAt", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "period", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "frequency", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "redundancy", + "type": "uint16" + }, + { + "internalType": "uint48", + "name": "maxGasPrice", + "type": "uint48" + }, + { + "internalType": "uint32", + "name": "maxGasLimit", + "type": "uint32" + }, + { + "internalType": "string", + "name": "containerId", + "type": "string" + }, + { + "internalType": "bytes", + "name": "inputs", + "type": "bytes" + } + ], + "internalType": "struct Coordinator.Subscription", + "name": "sub", + "type": "tuple" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "deliveryInterval", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "input", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "output", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "proof", + "type": "bytes" + } + ], + "name": "deliverComputeDelegatee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "activeAt", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "period", + "type": "uint32" + } + ], + "name": "getSubscriptionInterval", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "id", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "maxSubscriberNonce", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nodeInfo", + "outputs": [ + { + "internalType": "enum Manager.NodeStatus", + "name": "status", + "type": "uint8" + }, + { + "internalType": "uint32", + "name": "cooldownStart", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "nodeResponded", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "redundancyCount", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "node", + "type": "address" + } + ], + "name": "registerNode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "subscriptions", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint32", + "name": "activeAt", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "period", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "frequency", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "redundancy", + "type": "uint16" + }, + { + "internalType": "uint48", + "name": "maxGasPrice", + "type": "uint48" + }, + { + "internalType": "uint32", + "name": "maxGasLimit", + "type": "uint32" + }, + { + "internalType": "string", + "name": "containerId", + "type": "string" + }, + { + "internalType": "bytes", + "name": "inputs", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/playbook.yml b/playbook.yml new file mode 100644 index 0000000..e4df7be --- /dev/null +++ b/playbook.yml @@ -0,0 +1,214 @@ +--- +- name: System Setup and Configuration + hosts: all + become: yes + + + + tasks: + - name: Set locale to C.UTF-8 + command: localectl set-locale LANG=C.UTF-8 + + - name: Update /etc/bash.bashrc + blockinfile: + path: /etc/bash.bashrc + block: | + export HISTTIMEFORMAT='%F, %T ' + export HISTSIZE=10000 + export HISTFILESIZE=10000 + shopt -s histappend + export PROMPT_COMMAND='history -a' + export HISTCONTROL=ignoredups + export LANG=C.UTF-8 + export LC_ALL=C.UTF-8 + alias ls='ls --color=auto' + shopt -s cmdhist + + - name: Ensure ~/.inputrc exists + file: + path: /root/.inputrc + state: touch + + - name: Update ~/.inputrc + blockinfile: + path: ~/.inputrc + block: | + "\e[A": history-search-backward + "\e[B": history-search-forward + + - name: Ensure ~/.nanorc exists + file: + path: /root/.nanorc + state: touch + + - name: Update ~/.nanorc + blockinfile: + path: ~/.nanorc + block: | + set nohelp + set tabsize 4 + set tabstospaces + set autoindent + set positionlog + set backup + set backupdir /tmp/ + set locking + include /usr/share/nano/*.nanorc + + - name: Set hostname + shell: | + hostnamectl set-hostname {{ serverid }} + echo "127.0.1.1 {{ serverid }}" >> /etc/hosts + + - name: Update and upgrade apt + apt: + update_cache: yes + upgrade: dist + force_apt_get: yes + register: apt_update_result + retries: 50 + delay: 50 + until: apt_update_result is succeeded + + - name: Install necessary packages + apt: + name: + - apt-transport-https + - ca-certificates + - curl + - software-properties-common + - make + - iftop + - python3 + state: present + + - name: Install pip package web3 + pip: + name: web3 + extra_args: --break-system-packages + + - name: Install Docker + shell: curl -sL https://get.docker.com | sudo sh - + + - name: Ensure /etc/docker/daemon.json exists + file: + path: /etc/docker/daemon.json + state: touch + + - name: Update Docker daemon configuration for journald logging + copy: + dest: /etc/docker/daemon.json + content: | + { + "log-driver": "journald" + } + + - name: Restart Docker + service: + name: docker + state: restarted + + - name: Docker login + shell: docker login -u {{ docker_username }} -p {{ docker_password }} + + - name: Update journald log SystemMaxUse=2G configuration + lineinfile: + path: /etc/systemd/journald.conf + line: 'SystemMaxUse=2G' + insertafter: EOF + create: yes + + - name: Restart journald + service: + name: systemd-journald + state: restarted + + - name: Setup Foundry + shell: | + mkdir -p ~/foundry && cd ~/foundry + curl -L https://foundry.paradigm.xyz | bash + args: + executable: /bin/bash + + - name: Run foundryup + shell: | + source ~/.bashrc && foundryup + args: + executable: /bin/bash + + - name: Clone ritual-says-gm repository + git: + repo: https://gitea.vvzvlad.xyz/vvzvlad/ritual-says-gm.git + dest: ~/ritual-says-gm + force: yes + + - name: Update wallet, private key and RPC URL in project + shell: | + cd ~/ritual-says-gm + bash update.sh {{ wallet }} {{ private_key }} {{ rpc_url }} + + - name: Remove old Forge and Infernet SDK + shell: | + cd ~/ritual-says-gm + rm -rf projects/hello-world/contracts/lib/forge-std + rm -rf projects/hello-world/contracts/lib/infernet-sdk + + - name: Install Forge and Infernet SDK + shell: | + cd ~/foundry && source ~/.bashrc && foundryup + cd ~/ritual-says-gm + cd projects/hello-world/contracts + forge install --no-commit foundry-rs/forge-std + forge install --no-commit ritual-net/infernet-sdk + args: + executable: /bin/bash + + - name: Deploy container + shell: | + cd ~/ritual-says-gm && project=hello-world make deploy-container + + - name: Deploy contracts + shell: cd ~/ritual-says-gm && project=hello-world make deploy-contracts 2>&1 + register: contract_deploy_output + ignore_errors: yes + retries: 3 + delay: 53 + until: '"ONCHAIN EXECUTION COMPLETE & SUCCESSFUL" in contract_deploy_output.stdout' + + - name: Update CallContract.s.sol with contract address + shell: | + cd ~/ritual-says-gm + contract_address=$(jq -r '.transactions[0].contractAddress' projects/hello-world/contracts/broadcast/Deploy.s.sol/8453/run-latest.json) + checksum_address=$(python3 toChecksumAddress.py $contract_address) + sed -i "s/SaysGM(.*/SaysGM($checksum_address);/" projects/hello-world/contracts/script/CallContract.s.sol + + - name: Call contract + shell: cd ~/ritual-says-gm && project=hello-world make call-contract 2>&1 + register: contract_output + ignore_errors: yes + retries: 3 + delay: 55 + until: '"ONCHAIN EXECUTION COMPLETE & SUCCESSFUL" in contract_output.stdout' + + - name: Set Docker containers to restart unless stopped + shell: | + docker update --restart unless-stopped hello-world + docker update --restart unless-stopped infernet-node + docker update --restart unless-stopped deploy-redis-1 + docker update --restart unless-stopped infernet-anvil + docker update --restart unless-stopped deploy-fluentbit-1 + + - name: Create APT configuration file to assume yes + copy: + dest: /etc/apt/apt.conf.d/90forceyes + content: | + APT::Get::Assume-Yes "true"; + + - name: Set permissions on APT configuration file + file: + path: /etc/apt/apt.conf.d/90forceyes + mode: '0644' + + - name: Remove docker login credentials + shell: rm -rf /root/.docker/config.json + ignore_errors: yes \ No newline at end of file