Skip to content

Commit

Permalink
ci: deploy solis & contracts for sepolia
Browse files Browse the repository at this point in the history
  • Loading branch information
kwiss committed Jun 8, 2024
1 parent db97743 commit 76ffddd
Show file tree
Hide file tree
Showing 2 changed files with 117 additions and 65 deletions.
136 changes: 83 additions & 53 deletions .github/workflows/arkproject-deploy-contracts-sepolia.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,61 +44,91 @@ jobs:
STARKNET_SOLIS_ACCOUNT_PUBLIC_KEY_SEPOLIA: ${{ secrets.STARKNET_SOLIS_ACCOUNT_PUBLIC_KEY_SEPOLIA }}
run: |
pnpm run deploy:starknet -- --starknet sepolia
# deploy-orderbook:
# needs: deploy-starknet
# runs-on: ubuntu-latest
# name: Build & Deploy orderbook contract
# steps:
# - name: Checkout repository
# uses: actions/checkout@v2
# - name: Set up Node.js
# uses: actions/setup-node@v2
# with:
# node-version: "20"
- name: Setup SSH
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.SCALEWAY_SSH_KEY }}

- name: Upload generated messaging file to Scaleway instance
env:
SCALEWAY_MAINNET_IP: ${{ secrets.SCALEWAY_MAINNET_IP }}
run: |
scp -o StrictHostKeyChecking=no ./messaging.json root@${{ env.SCALEWAY_MAINNET_IP }}:/root/solis/config/messaging.json
# - name: Setup Scarb
# uses: software-mansion/setup-scarb@v1
# with:
# scarb-version: 2.5.4
- name: Restart solis service on Scaleway instance
env:
SCALEWAY_MAINNET_IP: ${{ secrets.SCALEWAY_MAINNET_IP }}
run: |
ssh -o StrictHostKeyChecking=no root@${{ env.SCALEWAY_MAINNET_IP }} 'sudo systemctl restart solis.service'
- name: Commit and Push Generated contract file
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config --global user.email "[email protected]"
git config --global user.name "Solis Bot"
git add contracts.json
if ! git diff --cached --quiet; then
git commit -m "feat: update contracts.json for sepolia deployment"
git push https://x-access-token:${GITHUB_TOKEN}@github.com/${{ github.repository }}.git HEAD:${{ github.ref }}
else
echo "No changes to commit"
deploy-orderbook:
needs: deploy-starknet
runs-on: ubuntu-latest
name: Build & Deploy orderbook contract
steps:
- name: Checkout repository
uses: actions/checkout@v2

# - name: Build contracts
# run: |
# cd contracts
# scarb build --workspace
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: "20"

# - name: Install pnpm & dependencies
# run: |
# npm install -g pnpm
# pnpm install
- name: Setup Scarb
uses: software-mansion/setup-scarb@v1
with:
scarb-version: 2.5.4

# - name: Deploy orderbook contracts
# env:
# STARKNET_NODE_URL_SEPOLIA: ${{ secrets.STARKNET_NODE_URL_SEPOLIA }}
# SOLIS_NODE_URL_SEPOLIA: ${{ secrets.SOLIS_NODE_URL_SEPOLIA }}
# STARKNET_ADMIN_ADDRESS_SEPOLIA: ${{ secrets.STARKNET_ADMIN_ADDRESS_SEPOLIA }}
# STARKNET_ADMIN_PRIVATE_KEY_SEPOLIA: ${{ secrets.STARKNET_ADMIN_PRIVATE_KEY_SEPOLIA }}
# STARKNET_ADMIN_PUBLIC_KEY_SEPOLIA: ${{ secrets.STARKNET_ADMIN_PUBLIC_KEY_SEPOLIA }}
# STARKNET_SOLIS_ACCOUNT_ADDRESS_SEPOLIA: ${{ secrets.STARKNET_SOLIS_ACCOUNT_ADDRESS_SEPOLIA }}
# STARKNET_SOLIS_ACCOUNT_PRIVATE_KEY_SEPOLIA: ${{ secrets.STARKNET_SOLIS_ACCOUNT_PRIVATE_KEY_SEPOLIA }}
# STARKNET_SOLIS_ACCOUNT_PUBLIC_KEY_SEPOLIA: ${{ secrets.STARKNET_SOLIS_ACCOUNT_PUBLIC_KEY_SEPOLIA }}
# SOLIS_ADMIN_ADDRESS_SEPOLIA: ${{ secrets.SOLIS_ADMIN_ADDRESS_SEPOLIA }}
# SOLIS_ADMIN_PRIVATE_KEY_SEPOLIA: ${{ secrets.SOLIS_ADMIN_PRIVATE_KEY_SEPOLIA }}
# SOLIS_ADMIN_PUBLIC_KEY_SEPOLIA: ${{ secrets.SOLIS_ADMIN_PUBLIC_KEY_SEPOLIA }}
# RPC_USER: ${{ secrets.RPC_USER }}
# RPC_PASSWORD: ${{ secrets.RPC_PASSWORD }}
# run: |
# pnpm run deploy:solis -- --solis sepolia --starknet sepolia
# - name: Commit and Push Generated contract file
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: |
# git config --global user.email "[email protected]"
# git config --global user.name "Solis Bot"
# git add contracts.json
# if ! git diff --cached --quiet; then
# git commit -m "feat: update contracts.json for sepolia deployment"
# git push https://x-access-token:${GITHUB_TOKEN}@github.com/${{ github.repository }}.git HEAD:${{ github.ref }}
# else
# echo "No changes to commit"
# fi
- name: Build contracts
run: |
cd contracts
scarb build --workspace
- name: Install pnpm & dependencies
run: |
npm install -g pnpm
pnpm install
- name: Deploy orderbook contracts
env:
STARKNET_NODE_URL_SEPOLIA: ${{ secrets.STARKNET_NODE_URL_SEPOLIA }}
SOLIS_NODE_URL_SEPOLIA: ${{ secrets.SOLIS_NODE_URL_SEPOLIA }}
STARKNET_ADMIN_ADDRESS_SEPOLIA: ${{ secrets.STARKNET_ADMIN_ADDRESS_SEPOLIA }}
STARKNET_ADMIN_PRIVATE_KEY_SEPOLIA: ${{ secrets.STARKNET_ADMIN_PRIVATE_KEY_SEPOLIA }}
STARKNET_ADMIN_PUBLIC_KEY_SEPOLIA: ${{ secrets.STARKNET_ADMIN_PUBLIC_KEY_SEPOLIA }}
STARKNET_SOLIS_ACCOUNT_ADDRESS_SEPOLIA: ${{ secrets.STARKNET_SOLIS_ACCOUNT_ADDRESS_SEPOLIA }}
STARKNET_SOLIS_ACCOUNT_PRIVATE_KEY_SEPOLIA: ${{ secrets.STARKNET_SOLIS_ACCOUNT_PRIVATE_KEY_SEPOLIA }}
STARKNET_SOLIS_ACCOUNT_PUBLIC_KEY_SEPOLIA: ${{ secrets.STARKNET_SOLIS_ACCOUNT_PUBLIC_KEY_SEPOLIA }}
SOLIS_ADMIN_ADDRESS_SEPOLIA: ${{ secrets.SOLIS_ADMIN_ADDRESS_SEPOLIA }}
SOLIS_ADMIN_PRIVATE_KEY_SEPOLIA: ${{ secrets.SOLIS_ADMIN_PRIVATE_KEY_SEPOLIA }}
SOLIS_ADMIN_PUBLIC_KEY_SEPOLIA: ${{ secrets.SOLIS_ADMIN_PUBLIC_KEY_SEPOLIA }}
RPC_USER: ${{ secrets.RPC_USER }}
RPC_PASSWORD: ${{ secrets.RPC_PASSWORD }}
run: |
pnpm run deploy:solis -- --solis sepolia --starknet sepolia
- name: Commit and Push Generated contract file
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config --global user.email "[email protected]"
git config --global user.name "Solis Bot"
git add contracts.json
if ! git diff --cached --quiet; then
git commit -m "feat: update contracts.json for sepolia deployment"
git push https://x-access-token:${GITHUB_TOKEN}@github.com/${{ github.repository }}.git HEAD:${{ github.ref }}
else
echo "No changes to commit"
fi
46 changes: 34 additions & 12 deletions packages/deployer/src/deployStarknetContracts.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { promises as fs } from "fs";
import path from "path";

import { program } from "commander";
import * as sn from "starknet";

import { ProviderNetwork } from "./types";

Expand All @@ -16,12 +16,12 @@ import { getFeeAddress, getStarknetProvider } from "./providers";
import {
getContractsFilePath,
getExistingContracts,
getMessagingFilePath,
getStarknetAccounts
} from "./utils";

async function deployStarknetContracts(starknetNetwork: ProviderNetwork) {
const { provider: starknetProvider } = getStarknetProvider(starknetNetwork);
const { provider: starknetProvider, nodeUrl: starknetNodeUrl } =
getStarknetProvider(starknetNetwork);
const { starknetAdminAccount, starknetSolisAccount } =
getStarknetAccounts(starknetNetwork);
const existingContracts = await getExistingContracts();
Expand All @@ -30,7 +30,8 @@ async function deployStarknetContracts(starknetNetwork: ProviderNetwork) {
console.log("=================\n");
console.log(`| Admin account | ${starknetAdminAccount.address}`);
const starknetSpinner = loading("💅 Deploying Starknet Contracts...").start();
let messagingContract: sn.Contract;

let messagingContract;
if (existingContracts[starknetNetwork].messaging) {
console.log("⚡ Upgrading Messaging Contract...");
starknetSpinner.text = "⚡ Upgrading Messaging Contract...";
Expand All @@ -55,8 +56,9 @@ async function deployStarknetContracts(starknetNetwork: ProviderNetwork) {
JSON.stringify(existingContracts)
);
}

starknetSpinner.text = "⚡ Deploying Executor Contract...";
let executorContract: sn.Contract;
let executorContract;
if (existingContracts[starknetNetwork].executor) {
console.log("⚡ Upgrading Executor Contract..");
starknetSpinner.text = "⚡ Upgrading Executor Contract...";
Expand All @@ -67,7 +69,6 @@ async function deployStarknetContracts(starknetNetwork: ProviderNetwork) {
existingContracts[starknetNetwork].executor
);
} else {
starknetSpinner.text = "⚡ Deploying Executor Contract...";
starknetSpinner.text = "⚡ Deploying Executor Contract...";
executorContract = await deployExecutor(
ARTIFACTS_PATH,
Expand All @@ -81,13 +82,34 @@ async function deployStarknetContracts(starknetNetwork: ProviderNetwork) {
getContractsFilePath(),
JSON.stringify(existingContracts)
);
const messagingFilePath = getMessagingFilePath(starknetNetwork);
const configData = JSON.parse(await fs.readFile(messagingFilePath, "utf8"));
configData.contract_address = messagingContract.address;
configData.sender_address = starknetSolisAccount?.address;
configData.private_key = starknetSolisAccount?.privateKey;
await fs.writeFile(messagingFilePath, JSON.stringify(configData, null, 2));
}

// Determine from_block based on the network
let fromBlock;
if (starknetNetwork === "sepolia") {
fromBlock = 72242;
} else if (starknetNetwork === "mainnet") {
fromBlock = 644128;
} else {
fromBlock = 0; // default or handle other networks if any
}

// Create the messaging file at the root of the project
const messagingFilePath = path.join(process.cwd(), "messaging.json");
const messagingFileContent = {
chain: "starknet",
rpc_url: starknetNodeUrl,
contract_address: messagingContract.address,
sender_address: starknetSolisAccount?.address,
private_key: starknetSolisAccount?.privateKey,
interval: 10,
from_block: fromBlock
};
await fs.writeFile(
messagingFilePath,
JSON.stringify(messagingFileContent, null, 2)
);

starknetSpinner.stop();
console.log("STARKNET CONTRACTS");
console.log("==================\n");
Expand Down

0 comments on commit 76ffddd

Please sign in to comment.