MCPcopy Index your code
hub / github.com/bandprotocol/chain

github.com/bandprotocol/chain @extra-rest-v3.1.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release extra-rest-v3.1.4 ↗ · + Follow
23,171 symbols 47,901 edges 796 files 9,532 documented · 41% updated 1d agov3.1.4 · 2026-06-02★ 1681 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

 

BandChain - Decentralized Data Delivery Network

Documentation »

What is BandChain?

BandChain is a cross-chain data oracle platform that aggregates and connects real-world data and APIs to smart contracts. It is designed to be compatible with most smart contract and blockchain development frameworks. It does the heavy lifting jobs of pulling data from external sources, aggregating them, and packaging them into the format that’s easy to use and verifiable efficiently across multiple blockchains.

Band's flexible oracle design allows developers to query any data including real-world events, sports, weather, random numbers and more. Developers can create custom-made oracles using WebAssembly to connect smart contracts with traditional web APIs within minutes.

Installation

Please refer to this documentation for the most up-to-date installation guide.

Building from source

We recommend the following for running a BandChain Validator:

  • 4 or more CPU cores
  • 16 GB of RAM (32 GB in case on participate in mainnet)
  • At least 150GB of disk storage

Step 1. Install Golang

Go v1.24+ or higher is required for BandChain.

If you haven't already, install Golang by following the official docs. Make sure that your GOPATH and GOBIN environment variables are properly set up.

Step 2. Get BandChain source code

Use git to retrieve BandChain from the official repo, and checkout the master branch, which contains the latest stable release. That should install the bandd binary.

git clone https://github.com/bandprotocol/chain
cd chain && git checkout v3.1.0
make install

Step 3. Verify your installation

Using bandd version command to verify that your bandd has been built successfully.

name: bandchain
server_name: bandd
version: 3.1.0
build_tags: netgo,ledger
go: go version go1.24.2 darwin/amd64
build_deps:
...

If you are using Mac ARM architecture (M1, M2) and face the issue of GMP library, you can run this.

brew update && brew install gmp
sudo ln -s /opt/homebrew/lib/libgmp.10.dylib /usr/local/lib/

Useful scripts for development

  • scripts/generate_genesis.sh to create/reset the default genesis file
  • scripts/start_bandd.sh to start the bandd binary
  • scripts/start_yoda.sh to start yoda with reporter(s)
  • scripts/start_grogu.sh to start grogu with feeder(s)
  • scripts/bandtss/start_cylinder.sh to start cylinder with grantee(s)

Resources

Community

License & Contributing

BandChain is licensed under the terms of the GPL 3.0 License unless otherwise specified in the LICENSE file at module's root.

We highly encourage participation from the community to help with D3N development. If you are interested in developing with D3N or have suggestions for protocol improvements, please open an issue, submit a pull request, or drop us a line.

Extension points exported contracts — how you extend this code

Worker (Interface)
Worker defines the interface for a worker that can be started and stopped. [10 implementers]
cylinder/worker.go
RouteI (Interface)
RouteI defines a routing path to deliver data to the destination. [50 implementers]
x/tunnel/types/route.go
PortKeeper (Interface)
PortKeeper defines the expected IBC port keeper [5 implementers]
x/oracle/types/expected_keepers.go
Content (Interface)
Content defines an interface that a signature order must implement. It contains information such as the type and routing [5 …
x/tss/types/content.go
DistributionKeeper (Interface)
DistributionKeeper defines the expected distribution keeper (noalias) [4 implementers]
x/bank/types/expected_keepers.go
TSSKeeper (Interface)
TSSKeeper defines the expected tss keeper (noalias) [3 implementers]
x/bandtss/types/expected_keepers.go
OracleKeeper (Interface)
OracleKeeper defines the expected oracle keeper [3 implementers]
x/feeds/types/expected_keepers.go
Hook (Interface)
Hook is an interface of hook that can process along with abci application [3 implementers]
hooks/common/hook.go

Core symbols most depended-on inside this repo

Column
called by 359
flusher/flusher/db.py
Error
called by 344
yoda/logger.go
HexDecode
called by 304
pkg/tss/testutil/utils.go
Marshal
called by 211
pkg/tss/types.go
Unmarshal
called by 211
pkg/tss/types.go
String
called by 208
pkg/tss/types.go
Bytes
called by 136
pkg/tss/types.go
Get
called by 135
api/band/oracle/v1/oracle.pulsar.go

Shape

Method 18,775
Function 2,316
Struct 1,520
TypeAlias 392
Interface 136
Class 24
FuncType 4
Route 4

Languages

Go99%
Python1%

Modules by API surface

api/band/oracle/v1/query.pulsar.go890 symbols
api/band/tss/v1beta1/tss.pulsar.go874 symbols
api/band/feeds/v1beta1/query.pulsar.go716 symbols
api/band/oracle/v1/oracle.pulsar.go708 symbols
api/band/tss/v1beta1/query.pulsar.go700 symbols
api/band/base/oracle/v1/proof.pulsar.go668 symbols
api/band/tunnel/v1beta1/tx.pulsar.go648 symbols
api/band/tunnel/v1beta1/route.pulsar.go579 symbols
x/oracle/types/query.pb.go549 symbols
api/band/oracle/v1/tx.pulsar.go534 symbols
api/band/tunnel/v1beta1/query.pulsar.go508 symbols
api/band/bandtss/v1beta1/query.pulsar.go504 symbols

Datastores touched

postgresDatabase · 1 repos

For agents

$ claude mcp add chain \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page