-
Notifications
You must be signed in to change notification settings - Fork 60
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
120 changed files
with
1,075 additions
and
893 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
name: Tests | ||
on: push | ||
on: pull_request | ||
|
||
jobs: | ||
chain-test: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,103 @@ | ||
linters-settings: | ||
run: | ||
timeout: 5m | ||
go: '1.19' | ||
skip-files: | ||
- ".*\\.pb\\.go$" | ||
- ".*\\.pb\\.gw\\.\\.go$" | ||
- ".*\\.pulsar\\.go$" | ||
|
||
linters: | ||
disable-all: true | ||
enable: | ||
- bodyclose | ||
- depguard | ||
- gofmt | ||
- goimports | ||
- whitespace | ||
- errcheck | ||
- exportloopref | ||
- gci | ||
- gocritic | ||
- gofumpt | ||
- gosec | ||
- gosimple | ||
- govet | ||
- ineffassign | ||
- misspell | ||
- nolintlint | ||
- revive | ||
- staticcheck | ||
- stylecheck | ||
- unconvert | ||
- typecheck | ||
- whitespace | ||
|
||
run: | ||
timeout: 5m | ||
go: '1.19' | ||
issues: | ||
exclude-rules: | ||
- text: 'Use of weak random number generator' | ||
linters: | ||
- gosec | ||
- text: 'ST1003:' | ||
linters: | ||
- stylecheck | ||
|
||
linters-settings: | ||
gci: | ||
custom-order: true | ||
sections: | ||
- standard # Standard section: captures all standard packages. | ||
- default # Default section: contains all imports that could not be matched to another section type. | ||
- prefix(github.com/bandprotocol/chain) | ||
gocritic: | ||
disabled-checks: | ||
- regexpMust | ||
- appendAssign | ||
- ifElseChain | ||
maligned: | ||
# print struct with more effective memory layout or not, false by default | ||
suggest-new: true | ||
nolintlint: | ||
allow-unused: false | ||
allow-leading-space: true | ||
require-explanation: false | ||
require-specific: false | ||
revive: | ||
rules: | ||
- name: unused-parameter | ||
disabled: true | ||
gosec: | ||
# To select a subset of rules to run. | ||
# Available rules: https://github.com/securego/gosec#available-rules | ||
# Default: [] - means include all rules | ||
includes: | ||
# - G101 # Look for hard coded credentials | ||
- G102 # Bind to all interfaces | ||
- G103 # Audit the use of unsafe block | ||
- G104 # Audit errors not checked | ||
- G106 # Audit the use of ssh.InsecureIgnoreHostKey | ||
- G107 # Url provided to HTTP request as taint input | ||
- G108 # Profiling endpoint automatically exposed on /debug/pprof | ||
- G109 # Potential Integer overflow made by strconv.Atoi result conversion to int16/32 | ||
- G110 # Potential DoS vulnerability via decompression bomb | ||
- G111 # Potential directory traversal | ||
- G112 # Potential slowloris attack | ||
- G113 # Usage of Rat.SetString in math/big with an overflow (CVE-2022-23772) | ||
- G114 # Use of net/http serve function that has no support for setting timeouts | ||
- G201 # SQL query construction using format string | ||
- G202 # SQL query construction using string concatenation | ||
- G203 # Use of unescaped data in HTML templates | ||
- G204 # Audit use of command execution | ||
- G301 # Poor file permissions used when creating a directory | ||
- G302 # Poor file permissions used with chmod | ||
- G303 # Creating tempfile using a predictable path | ||
- G304 # File path provided as taint input | ||
- G305 # File traversal when extracting zip/tar archive | ||
- G306 # Poor file permissions used when writing to a new file | ||
- G307 # Deferring a method which returns an error | ||
- G401 # Detect the usage of DES, RC4, MD5 or SHA1 | ||
- G402 # Look for bad TLS connection settings | ||
- G403 # Ensure minimum RSA key length of 2048 bits | ||
- G404 # Insecure random number source (rand) | ||
- G501 # Import blocklist: crypto/md5 | ||
- G502 # Import blocklist: crypto/des | ||
- G503 # Import blocklist: crypto/rc4 | ||
- G504 # Import blocklist: net/http/cgi | ||
- G505 # Import blocklist: crypto/sha1 | ||
- G601 # Implicit memory aliasing of items from a range statement | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -21,27 +21,21 @@ BandChain - Decentralized Data Delivery Network<br/><br/> | |
<p align="center"> | ||
<a href="https://docs.bandchain.org/"><strong>Documentation »</strong></a> | ||
<br /> | ||
<br/> | ||
<a href="http://docs.bandchain.org/whitepaper/introduction.html">Whitepaper</a> | ||
· | ||
<a href="http://docs.bandchain.org/technical-specifications/obi.html">Technical Specifications</a> | ||
· | ||
<a href="http://docs.bandchain.org/using-any-datasets/">Developer Documentation</a> | ||
· | ||
<a href="http://docs.bandchain.org/client-library/data.html">Client Library</a> | ||
</p> | ||
|
||
<br/> | ||
|
||
## 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 verified efficiently across multiple blockchains. | ||
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 | ||
|
||
### Building from source | ||
Please refer to [this documentation](https://docs.bandchain.org/node-validators/run-node/joining-mainnet/installation) for the most up-to-date installation guide. | ||
|
||
## Building from source | ||
|
||
We recommend the following for running a BandChain Validator: | ||
|
||
|
@@ -61,7 +55,7 @@ Use `git` to retrieve BandChain from the [official repo](https://github.com/band | |
|
||
```bash | ||
git clone https://github.com/bandprotocol/chain | ||
cd chain && git checkout v2.3.0 | ||
cd chain && git checkout v2.5.4 | ||
make install | ||
``` | ||
|
||
|
@@ -70,28 +64,27 @@ make install | |
Using `bandd version` command to verify that your `bandd` has been build successfully. | ||
|
||
``` | ||
bandd version --long | ||
name: bandchain | ||
server_name: bandd | ||
version: 2.3.0 | ||
commit: 4fe19638b33043eed4dec9861cda40962fb5b2a7 | ||
build_tags: ledger | ||
go: go version go1.18.3 darwin/amd64 | ||
version: 2.5.4 | ||
commit: e6548bbf4793829bb8e711e5ed89ba4afc710ded | ||
build_tags: netgo,ledger | ||
go: go version go1.19.1 darwin/amd64 | ||
build_deps: | ||
... | ||
``` | ||
|
||
### Setting Up Yoda — The Oracle Daemon | ||
|
||
BandChain validators are also responsible for responding to oracle data requests. Whenever someone submits a request message to BandChain, the chain will autonomously choose a subset of active oracle validators to perform the data query. | ||
|
||
The validators are chosen submit a report message to BandChain within a given timeframe as specified by a chain parameter (100 blocks in mainnet). We provide a program called yoda to do this task for you. For more information on the data request process, please see [here](https://docs.bandchain.org/whitepaper/system-overview.html#oracle-data-request). | ||
|
||
Yoda uses an external executor to resolve requests to data sources. Currently, it supports [AWS Lambda](https://aws.amazon.com/lambda/) and [Google Cloud Function](https://cloud.google.com/functions) (through the REST interface). In future releases, `yoda` will support more executors and allow you to specify multiple executors to add redundancy. | ||
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/ | ||
``` | ||
|
||
You also need to set up `yoda` and activate oracle status. Here’s the [documentation](https://github.com/bandprotocol/bandchain/wiki/Instruction-for-apply-to-be-an-oracle-validator-on-Guanyu-mainnet) to get started. | ||
## Useful scripts for development | ||
|
||
That’s it! You can verify that your validator is now an oracle provider via cli by using ` bandd query oracle validator <your validator address>`. Your yoda process must be responding to oracle requests assigned to your node. If the process misses a request, your oracle provider status will automatically get deactivated and you must send MsgActivate to activate again after a 10-minute waiting period and make sure that yoda is up. | ||
- `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) | ||
|
||
## Resources | ||
|
||
|
@@ -105,19 +98,19 @@ That’s it! You can verify that your validator is now an oracle provider via cl | |
- [Cosmoscan Mainnet](https://cosmoscan.io) | ||
- [Big Dipper](https://band.bigdipper.live/) | ||
- Testnet: | ||
- [CosmoScan Testnet](https://laozi-testnet2.cosmoscan.io) | ||
- [CosmoScan Testnet](https://laozi-testnet6.cosmoscan.io) | ||
|
||
## Community | ||
|
||
- [Official Website](https://bandprotocol.com) | ||
- [Telegram](https://100.band/tg) | ||
- [Telegram](https://t.me/bandprotocol) | ||
- [Twitter](https://twitter.com/bandprotocol) | ||
- [Developer Discord](https://100x.band/discord) | ||
- [Developer Discord](https://discord.com/invite/3t4bsY7) | ||
|
||
## 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 suggestion for protocol improvements, please open an issue, submit a pull request, or [drop as a line]. | ||
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 as a line]. | ||
|
||
[drop as a line]: mailto:[email protected] | ||
[drop us a line]: mailto:[email protected] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.