Skip to content

Commit

Permalink
feat: add smart contract verification
Browse files Browse the repository at this point in the history
Signed-off-by: Yaroslav Markovski <[email protected]>
  • Loading branch information
yaroslav-007 committed Jun 5, 2024
1 parent 531fc00 commit 9d18425
Show file tree
Hide file tree
Showing 8 changed files with 182 additions and 108 deletions.
15 changes: 7 additions & 8 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -100,13 +100,12 @@ GRAFANA_IMAGE_NAME=grafana/grafana
GRAFANA_IMAGE_TAG=8.5.16

### Sourcify ####
#Sourcify Common
SOURCIFY_TESTING=false
SOURCIFY_TAG=main
SOURCIFY_UI_DOMAIN_NAME=localhost
SOURCIFY_SERVER_REPOSITORY_PATH=/data

#Sourcify Server
SOURCIFY_SERVER_SOLC_REPO=/data/solc-bin/linux-amd64
SOURCIFY_SERVER_SOLJSON_REPO=/data/solc-bin/soljson
SOURCIFY_SERVER_CREATE2_VERIFICATION=false
SOURCIFY_USE_LOCAL_NODE=true
SOURCIFY_SERVER_PORT=5555
SOURCIFY_NODE_ENV=development

#Sourcify ui
SOURCIFY_UI_PORT=1234
SOURCIFY_REPOSITORY_PORT=10000
54 changes: 54 additions & 0 deletions compose-network/explorer/networks-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
[
{
"name": "mainnet",
"displayName": "MAINNET",
"url": "https://mainnet-public.mirrornode.hedera.com/",
"ledgerID": "00",
"sourcifySetup": {
"activate": true,
"repoURL": "http://localhost:10000/contracts/",
"serverURL": "http://localhost:5002/",
"verifierURL": "http://localhost:3000/#/",
"chainID": 295
}
},
{
"name": "testnet",
"displayName": "TESTNET",
"url": "https://testnet.mirrornode.hedera.com/",
"ledgerID": "01",
"sourcifySetup": {
"activate": true,
"repoURL": "http://localhost:10000/contracts/",
"serverURL": "http://localhost:5002/",
"verifierURL": "http://localhost:3000/#/",
"chainID": 296
}
},
{
"name": "previewnet",
"displayName": "PREVIEWNET",
"url": "https://previewnet.mirrornode.hedera.com/",
"ledgerID": "02",
"sourcifySetup": {
"activate": true,
"repoURL": "http://localhost:10000/contracts/",
"serverURL": "http://localhost:5002/",
"verifierURL": "http://localhost:3000/#/",
"chainID": 297
}
},
{
"name": "localnode",
"displayName": "LOCAL NODE",
"url": "http://127.0.0.1:5551",
"ledgerID": "FF",
"sourcifySetup": {
"activate": true,
"repoURL": "http://localhost:10000/contracts/",
"serverURL": "http://localhost:5555/",
"verifierURL": "http://localhost:5555/#/",
"chainID": 298
}
}
]
49 changes: 49 additions & 0 deletions compose-network/sourcify/local.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
//diff sourcify/services/server/src/config/default.js ./local.js
module.exports = {
server: {
port: 5555,
maxFileSize: 30 * 1024 * 1024, // 30 MB
},
// Deprecated repository
repositoryV1: {
path: "/tmp/sourcify/repository",
serverUrl: "http://localhost:10000", // Need to keep this as it's used in IpfsRepositoryService.ts fetchAllFileUrls.
},
// Disable repositoryV2 by default for now, we will enable it once we start the synchronization script
// repositoryV2: {
// path: "/tmp/sourcify/repositoryV2",
// },
solcRepo: "/tmp/solc-bin/linux-amd64",
solJsonRepo: "/tmp/solc-bin/soljson",
session: {
secret: process.env.SESSION_SECRET || "CHANGE_ME",
maxAge: 12 * 60 * 60 * 1000, // 12 hrs in millis
secure: false, // Set Secure in the Set-Cookie header i.e. require https
storeType: "memory", // Where to save the session info. "memory" is only good for testing and local development. Don't use it in production!
},
// It is possible to outsource the compilation to a lambda function instead of running locally. Turned on in production.
// Requires env vars AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
lambdaCompiler: {
enabled: false,
// functionName: "compile",
},
corsAllowedOrigins: [
/^https?:\/\/(?:.+\.)?sourcify.dev$/, // sourcify.dev and subdomains
/^https?:\/\/(?:.+\.)?sourcify.eth$/, // sourcify.eth and subdomains
/^https?:\/\/(?:.+\.)?sourcify.eth.link$/, // sourcify.eth.link and subdomains
/^https?:\/\/(?:.+\.)?ipfs.dweb.link$/, // dweb links used by Brave browser etc.
process.env.NODE_ENV !== "production" && /^https?:\/\/localhost(?::\d+)?$/, // localhost on any port
],
rateLimit: {
enabled: false,
// Check done with "startsWith"
whitelist: [
"10.", // internal IP range
"::ffff:10.",
"127.0.0.1",
"::ffff:127.0.0.1",
"::1",
],
},
};

8 changes: 8 additions & 0 deletions compose-network/sourcify/servers.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
- description: The current REST API server
url: ""
- description: The production REST API server
url: "https://server-verify.hashscan.io"
- description: The staging REST API server
url: "https://server-sourcify.hedera-devops.com"
- description: Local development server address on default port 5555
url: "http://localhost:5555"
22 changes: 22 additions & 0 deletions compose-network/sourcify/sourcify-chains.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"295": {
"sourcifyName": "Hedera Mainnet",
"supported": true
},
"296": {
"sourcifyName": "Hedera Testnet",
"supported": true
},
"297": {
"sourcifyName": "Hedera Previewnet",
"supported": true
},
"298": {
"sourcifyName": "Hedera Localnet",
"supported": true,
"rpc": [
"http://host.docker.internal:7546"
]
}
}

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"SERVER_URL": "http://localhost:5002",
{
"SERVER_URL": "http://localhost:5555",
"REPOSITORY_SERVER_URL": "http://localhost:10000",
"EXPLORER_URL": "http://localhost:8080",
"BRAND_PRODUCT_LOGO_URL": "",
Expand All @@ -10,4 +10,4 @@
"JSON_IMPORT": false,
"OPEN_IN_REMIX": false,
"CREATE2_VERIFICATION": false
}
}
82 changes: 39 additions & 43 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ services:
ports:
- "8080:8080"
volumes:
- ./networks-config.json:/app/networks-config.json
- ./compose-network/explorer/networks-config.json:/app/networks-config.json

web3:
image: "${MIRROR_IMAGE_PREFIX}hedera-mirror-web3:${MIRROR_IMAGE_TAG}"
Expand Down Expand Up @@ -494,67 +494,63 @@ services:
network-node-bridge:
ipv4_address: 172.27.0.50

sourcify-repository:
image: ghcr.io/hashgraph/hedera-sourcify:repository-${SOURCIFY_TAG}
restart: unless-stopped
container_name: sourcify-repository-${SOURCIFY_TAG}
ports:
- "10000:80"
volumes:
- sourcify-repository:/data:ro
networks:
- mirror-node
environment:
REPOSITORY_PATH: "${SOURCIFY_SERVER_REPOSITORY_PATH}"
REPOSITORY_SERVER_EXTERNAL_PORT: 10000
UI_DOMAIN_NAME: "${SOURCIFY_UI_DOMAIN_NAME}"
TESTING: "${SOURCIFY_TESTING}"
TAG: "${SOURCIFY_TAG}"

sourcify-server:
image: ghcr.io/hashgraph/hedera-sourcify:server-${SOURCIFY_TAG}
image: ghcr.io/hashgraph/hedera-sourcify/server:${SOURCIFY_TAG}
restart: unless-stopped
container_name: sourcify-server-${SOURCIFY_TAG}
environment:
NODE_ENV: ${SOURCIFY_NODE_ENV}
ports:
- "5002:5002"
- "${SOURCIFY_SERVER_PORT}:5555"
volumes:
- sourcify-repository:/data
networks:
- mirror-node
environment:
SERVER_PORT: "5002"
UI_DOMAIN_NAME: "${SOURCIFY_UI_DOMAIN_NAME}"
SERVER_CREATE2_VERIFICATION: "${SOURCIFY_SERVER_CREATE2_VERIFICATION}"
TESTING: "${SOURCIFY_TESTING}"
TAG: "${SOURCIFY_TAG}"
SOLC_REPO: "${SOURCIFY_SERVER_SOLC_REPO}"
SOLJSON_REPO: "${SOURCIFY_SERVER_SOLJSON_REPO}"
REPOSITORY_PATH: "${SOURCIFY_SERVER_REPOSITORY_PATH}"
REPOSITORY_SERVER_URL: "http://sourcify-repository-${SOURCIFY_TAG}"
USE_LOCAL_NODE: "${SOURCIFY_USE_LOCAL_NODE}"
- type: bind
source: ./compose-network/sourcify/servers.yaml
target: /home/app/services/server/dist/servers.yaml
- type: bind
source: ./compose-network/sourcify/sourcify-chains.json
target: /home/app/services/server/dist/sourcify-chains.json
- type: bind
source: ./compose-network/sourcify/local.js
target: /home/app/services/server/dist/config/local.js
- type: volume
source: sourcify-data
target: /data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5002/health"]
test: ["CMD", "curl", "-f", "http://localhost:${SOURCIFY_SERVER_PORT}/health"]
interval: 30s
timeout: 10s
retries: 10

sourcify-ui:
image: ghcr.io/hashgraph/hedera-sourcify:ui-${SOURCIFY_TAG}
sourcify-sourcify-ui:
image: ghcr.io/hashgraph/hedera-sourcify/ui:${SOURCIFY_TAG}
restart: unless-stopped
container_name: sourcify-ui-${SOURCIFY_TAG}
ports:
- "1234:80"
- "${SOURCIFY_UI_PORT}:80"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 10
volumes:
- type: bind
source: ./sourcify-ui-docker-config.json
source: ./compose-network/sourcify/ui-config.json
target: /usr/share/nginx/html/config.json
networks:
- mirror-node

sourcify-repository:
image: ghcr.io/hashgraph/hedera-sourcify/repository:${SOURCIFY_TAG}
restart: unless-stopped
container_name: sourcify-repository-${SOURCIFY_TAG}
environment:
SOURCIFY_SERVER: "http://host.docker.internal:${SOURCIFY_SERVER_PORT}"
SERVER_URL: "http://localhost:${SOURCIFY_SERVER_PORT}"
volumes:
- type: volume
source: sourcify-data
target: /data
read_only: true
ports:
- "${SOURCIFY_REPOSITORY_PORT}:80"

networks:
network-node-bridge:
Expand Down Expand Up @@ -582,5 +578,5 @@ volumes:
name: prometheus-data
grafana-data:
name: grafana-data
sourcify-repository:
name: sourcify-repository
sourcify:
name: sourcify-data
54 changes: 0 additions & 54 deletions networks-config.json

This file was deleted.

0 comments on commit 9d18425

Please sign in to comment.