{"id":13485400,"url":"https://github.com/icon-project/gochain-local","last_synced_at":"2026-04-04T03:08:55.886Z","repository":{"id":43337905,"uuid":"332639976","full_name":"icon-project/gochain-local","owner":"icon-project","description":"Helper scripts to run gochain docker container as a local network","archived":false,"fork":false,"pushed_at":"2023-12-07T02:16:28.000Z","size":162,"stargazers_count":5,"open_issues_count":0,"forks_count":8,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-10-30T20:44:03.077Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/icon-project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-01-25T05:26:17.000Z","updated_at":"2023-02-18T21:10:14.000Z","dependencies_parsed_at":"2023-12-07T03:24:46.931Z","dependency_job_id":"d585fc35-1a2d-4ad0-a215-8dd4d6666862","html_url":"https://github.com/icon-project/gochain-local","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icon-project%2Fgochain-local","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icon-project%2Fgochain-local/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icon-project%2Fgochain-local/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icon-project%2Fgochain-local/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/icon-project","download_url":"https://codeload.github.com/icon-project/gochain-local/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245910746,"owners_count":20692497,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T18:00:21.630Z","updated_at":"2026-04-04T03:08:55.859Z","avatar_url":"https://github.com/icon-project.png","language":"Shell","funding_links":[],"categories":["Core ICON blockchain"],"sub_categories":[],"readme":"# gochain-local\n\nA collection of helper scripts to run gochain docker container as a local network.\n\n## Requirements\n\n- Download and install Docker\n  - [Get Docker](https://docs.docker.com/get-docker/)\n\n- `goloop/gochain-icon` docker image\n  - Build\n    ```\n    $ git clone https://github.com/icon-project/goloop.git\n    $ cd goloop\n    $ make gochain-icon-image\n    ```\n  - Verify the generated image\n    ```\n    $ docker images goloop/gochain-icon\n    REPOSITORY            TAG       IMAGE ID       CREATED         SIZE\n    goloop/gochain-icon   latest    74676aec69ef   2 minutes ago   513MB\n    ```\n\n## Usage\n\nYou can start or stop the docker container using the following script. You can also use [docker compose](#using-docker-compose) to start or stop the container.\n\n```\n$ ./run_gochain.sh\nUsage: ./run_gochain.sh [start|stop|pause|unpause|ps]\n```\n\n### Start the container\n\n```\n$ ./run_gochain.sh start\n\u003e\u003e\u003e START with compose-single.yml\nCreating network \"gochain-local_default\" with the default driver\nCreating gochain-iconee ... done\n\n$ ./run_gochain.sh ps\n     Name                   Command               State                              Ports\n----------------------------------------------------------------------------------------------------------------------\ngochain-iconee   /entrypoint /bin/sh -c /go ...   Up      8080/tcp, 9080/tcp, 0.0.0.0:9082-\u003e9082/tcp,:::9082-\u003e9082/tcp\n```\n\nNote that log messages will be generated at `./chain/iconee.log`.\n\n```\n$ head ./chain/iconee.log\nI|20211008-03:27:35.242715|b6b5|-|main|main.go:433   ____  ___   ____ _   _    _    ___ _   _\nI|20211008-03:27:35.243626|b6b5|-|main|main.go:433  / ___|/ _ \\ / ___| | | |  / \\  |_ _| \\ | |\nI|20211008-03:27:35.243644|b6b5|-|main|main.go:433 | |  _| | | | |   | |_| | / _ \\  | ||  \\| |\nI|20211008-03:27:35.243659|b6b5|-|main|main.go:433 | |_| | |_| | |___|  _  |/ ___ \\ | || |\\  |\nI|20211008-03:27:35.243678|b6b5|-|main|main.go:433  \\____|\\___/ \\____|_| |_/_/   \\_\\___|_| \\_|\nI|20211008-03:27:35.243693|b6b5|-|main|main.go:435 Version : v1.0.0\nI|20211008-03:27:35.243713|b6b5|-|main|main.go:436 Build   : linux/amd64 tags(rocksdb)-2021-10-05-08:13:18\nI|20211008-03:27:35.243732|b6b5|-|metric|metric.go:150 Initialize rootMetricCtx\nT|20211008-03:27:35.244757|b6b5|-|TP|transport.go:383 registerPeerHandler \u0026{0xc0001ca540 0xc0001ca4e0 map[] {{0 0} 0 0 0 0} 0xc0001ca5a0} true\nT|20211008-03:27:35.244925|b6b5|-|TP|transport.go:383 registerPeerHandler \u0026{0xc0001ca4b0 :8080} true\n```\n\n### Stop the container\n\n```\n$ ./run_gochain.sh stop\n\u003e\u003e\u003e STOP with compose-single.yml\nStopping gochain-iconee ... done\nRemoving gochain-iconee ... done\nRemoving network gochain-local_default\n```\n\n### Pause the container\n```\n$ ./run_gochain.sh pause\n```\n\n### Unpause the container\n```\n$ ./run_gochain.sh unpause\n```\n\n## Using Docker Compose\n\nThere are two docker Compose files as the following.\n  - `compose-single.yml`: run a single gochain node as the previous script example\n  - `compose-multi.yml`: run multiple (four) gochain nodes which validate the same blocks\n\n### Create and Start the container\n\n#### For a single gochain node:\n```\n$ docker compose -f compose-single.yml up -d\nCreating network \"gochain-local_default\" with the default driver\nCreating gochain-iconee ... done\n\n$ docker compose -f compose-single.yml ps\n     Name                   Command               State                              Ports\n----------------------------------------------------------------------------------------------------------------------\ngochain-iconee   /entrypoint /bin/sh -c /go ...   Up      8080/tcp, 9080/tcp, 0.0.0.0:9082-\u003e9082/tcp,:::9082-\u003e9082/tcp\n```\n\n#### For multiple gochain nodes:\n```\n$ docker compose -f compose-multi.yml up -d\nCreating network \"gochain-local_default\" with the default driver\nCreating gochain-local_node3_1 ... done\nCreating gochain-local_node0_1 ... done\nCreating gochain-local_node1_1 ... done\nCreating gochain-local_node2_1 ... done\n\n$ docker compose -f compose-multi.yml ps\n        Name                       Command               State                         Ports\n-------------------------------------------------------------------------------------------------------------------\ngochain-local_node0_1   /entrypoint /bin/sh -c /go ...   Up      8080/tcp, 0.0.0.0:9080-\u003e9080/tcp,:::9080-\u003e9080/tcp\ngochain-local_node1_1   /entrypoint /bin/sh -c /go ...   Up      8080/tcp, 0.0.0.0:9081-\u003e9080/tcp,:::9081-\u003e9080/tcp\ngochain-local_node2_1   /entrypoint /bin/sh -c /go ...   Up      8080/tcp, 0.0.0.0:9082-\u003e9080/tcp,:::9082-\u003e9080/tcp\ngochain-local_node3_1   /entrypoint /bin/sh -c /go ...   Up      8080/tcp, 0.0.0.0:9083-\u003e9080/tcp,:::9083-\u003e9080/tcp\n```\n\n### Stop and remove the container\n\n```\n$ docker compose -f compose-single.yml down\n```\n\nor\n```\n$ docker compose -f compose-multi.yml down\n```\n\n## Persistence of Data\nIf you want to persist your data across docker restarts, set `GOCHAIN_CLEAN_DATA` in `./data/single/iconee.env` to `false`.\nIn case of the multiple nodes, modify `./data/multi/common.env` instead.\n\n\n## Using Blockchain Tracker\n\n[Tracker](tracker) folder contains a `docker-compose.yml` and `.env` files to run a local blockchain explorer (a.k.a. tracker).\n\nAfter starting the local gochain nodes (single or multi), run the following command to start the tracker.\n\n```\n$ cd tracker\n$ docker compose up -d\nCreating network \"tracker_default\" with the default driver\nCreating tracker_mysql ... done\nCreating tracker_app   ... done\nCreating tracker_nginx ... done\n```\n\nThen open the page [http://127.0.0.1](http://127.0.0.1) with your favorite web browser.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficon-project%2Fgochain-local","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficon-project%2Fgochain-local","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficon-project%2Fgochain-local/lists"}