https://github.com/cgcl-codes/morphdag-prototype
Released code of the MorphDAG prototype (version 2.0)
Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.5%) to scientific vocabulary
Repository
Released code of the MorphDAG prototype (version 2.0)
Basic Info
Statistics
- Stars: 9
- Watchers: 3
- Forks: 1
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
Description
The repository hosts MorphDAG 1.0, a Golang implementation of an elastic DAG-based blockchain system supporting fast commitment, concurrent execution, and adaptive sharding. The prototype of MorphDAG 1.0 is affiliated with the National Key Research and Development (R&D) Program Project, 2021YFB2700700.
Usage
1. Precondition
necessary software environment: - installation of go
Remove any previous Go installation by deleting the /usr/local/go folder (if it exists), then extract the archive you just downloaded into /usr/local, creating a fresh Go tree in /usr/local/go:
shell script
$ rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz
Add /usr/local/go/bin to the PATH environment variable.
shell script
export PATH=$PATH:/usr/local/go/bin
- installation of python
shell script
sudo apt-get install python3.7
- installation of pip
shell script $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py $ sudo python get-pip.py
2. Steps to run MorphDAG
2.1 Install fabric on the work computer
- installation of fabric
Fabric is best installed via pip:
shell script
pip install fabric
2.2 Login replicas without passwords
Enable workcomputer to login in servers and clients without passwords.
Commands below are run on the work computer. ```shell script
Generate the ssh keys (if not generated before)
ssh-keygen ssh-copy-id -i ~/.ssh/idrsa.pub $IPADDROFEACH_SERVER ```
2.3 Install Go-related modules/packages
```shell
Enter the directory go-MorphDAG
go mod tidy ```
2.4 local testnetwork configuration
Run MorphDAG on a local testnetwork. Parameters of the local testnetwork are defined in the file benchmark/fabfile.py.
The default configuration is as follows:
python
bench_params = {
'shard_num': 2,
'shard_size': 11,
'cycle': 100,
'rate': 2000,
'batch_size': 300,
'measure_rounds': 300,
'duration': 60,
'regenconfig': True,
}
You can use the following command to start a local testnetwork
shell
fab local
2.5 lan testnetwork configuration
Run MorphDAG on a lan testnetwork. Parameters of the lan testnetwork are defined in the file benchmark/fabfile.py.
The default configuration is as follows:
python
bench_params = {
'shard_num': 8,
'shard_size': 6,
'cycle': 50,
'rate': 2000,
'batch_size': 500,
'measure_rounds': 300,
'duration': 200,
'regenconfig': True,
}
For node configuration such as ips and ports, you can refer to the benchmark/lan.py file.
2.6 Run Client
For stable testing, the client is instantiated together with the workserver. Normally, the number of client in each shard is set to 1 and its index is $n+1$ where $n$ is the number of replicas a shard contains.
Owner
- Name: CGCL-codes
- Login: CGCL-codes
- Kind: organization
- Website: http://grid.hust.edu.cn/
- Repositories: 35
- Profile: https://github.com/CGCL-codes
CGCL/SCTS/BDTS Lab
GitHub Events
Total
- Watch event: 1
- Push event: 2
Last Year
- Watch event: 1
- Push event: 2
Dependencies
- github.com/benbjohnson/clock v1.3.0
- github.com/beorn7/perks v1.0.1
- github.com/cespare/xxhash/v2 v2.2.0
- github.com/chinuy/zipf v0.0.0-20180918155919-1ef58b781f9a
- github.com/containerd/cgroups v1.0.4
- github.com/coreos/go-systemd/v22 v22.5.0
- github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c
- github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0
- github.com/docker/go-units v0.5.0
- github.com/elastic/gosigar v0.14.2
- github.com/flynn/noise v1.0.0
- github.com/francoispqt/gojay v1.2.13
- github.com/fsnotify/fsnotify v1.6.0
- github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0
- github.com/godbus/dbus/v5 v5.1.0
- github.com/gogo/protobuf v1.3.2
- github.com/golang/mock v1.6.0
- github.com/golang/protobuf v1.5.2
- github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db
- github.com/google/gopacket v1.1.19
- github.com/google/pprof v0.0.0-20221203041831-ce31453925ec
- github.com/hashicorp/go-msgpack v0.5.5
- github.com/hashicorp/hcl v1.0.0
- github.com/huin/goupnp v1.0.3
- github.com/ipfs/go-cid v0.3.2
- github.com/ipfs/go-log/v2 v2.5.1
- github.com/jackpal/go-nat-pmp v1.0.2
- github.com/jbenet/go-temp-err-catcher v0.1.0
- github.com/klauspost/compress v1.15.12
- github.com/klauspost/cpuid/v2 v2.2.1
- github.com/koron/go-ssdp v0.0.3
- github.com/libp2p/go-buffer-pool v0.1.0
- github.com/libp2p/go-cidranger v1.1.0
- github.com/libp2p/go-flow-metrics v0.1.0
- github.com/libp2p/go-libp2p v0.26.0
- github.com/libp2p/go-libp2p-asn-util v0.2.0
- github.com/libp2p/go-msgio v0.3.0
- github.com/libp2p/go-nat v0.1.0
- github.com/libp2p/go-netroute v0.2.1
- github.com/libp2p/go-reuseport v0.2.0
- github.com/libp2p/go-yamux/v4 v4.0.0
- github.com/magiconair/properties v1.8.7
- github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd
- github.com/mattn/go-isatty v0.0.16
- github.com/matttproud/golang_protobuf_extensions v1.0.4
- github.com/miekg/dns v1.1.50
- github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b
- github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc
- github.com/minio/sha256-simd v1.0.0
- github.com/mitchellh/mapstructure v1.5.0
- github.com/mr-tron/base58 v1.2.0
- github.com/multiformats/go-base32 v0.1.0
- github.com/multiformats/go-base36 v0.2.0
- github.com/multiformats/go-multiaddr v0.8.0
- github.com/multiformats/go-multiaddr-dns v0.3.1
- github.com/multiformats/go-multiaddr-fmt v0.1.0
- github.com/multiformats/go-multibase v0.1.1
- github.com/multiformats/go-multicodec v0.7.0
- github.com/multiformats/go-multihash v0.2.1
- github.com/multiformats/go-multistream v0.4.1
- github.com/multiformats/go-varint v0.0.7
- github.com/nxadm/tail v1.4.8
- github.com/onsi/ginkgo/v2 v2.5.1
- github.com/opencontainers/runtime-spec v1.0.2
- github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58
- github.com/pelletier/go-toml/v2 v2.0.6
- github.com/pkg/errors v0.9.1
- github.com/prometheus/client_golang v1.14.0
- github.com/prometheus/client_model v0.3.0
- github.com/prometheus/common v0.37.0
- github.com/prometheus/procfs v0.8.0
- github.com/quic-go/qpack v0.4.0
- github.com/quic-go/qtls-go1-19 v0.2.1
- github.com/quic-go/qtls-go1-20 v0.1.1
- github.com/quic-go/quic-go v0.33.0
- github.com/quic-go/webtransport-go v0.5.1
- github.com/raulk/go-watchdog v1.3.0
- github.com/seafooler/sign_tools v0.0.0-20230102164452-07f1c49cf416
- github.com/spaolacci/murmur3 v1.1.0
- github.com/spf13/afero v1.9.3
- github.com/spf13/cast v1.5.0
- github.com/spf13/jwalterweatherman v1.1.0
- github.com/spf13/pflag v1.0.5
- github.com/spf13/viper v1.15.0
- github.com/subosito/gotenv v1.4.2
- github.com/syndtr/goleveldb v1.0.0
- github.com/tv42/base58 v1.0.0
- github.com/zllai/go-MerklePatriciaTree v0.0.0-20190826154110-1538c9c6c9e6
- go.dedis.ch/fixbuf v1.0.3
- go.dedis.ch/kyber/v3 v3.1.0
- go.uber.org/atomic v1.10.0
- go.uber.org/dig v1.15.0
- go.uber.org/fx v1.18.2
- go.uber.org/multierr v1.8.0
- go.uber.org/zap v1.24.0
- golang.org/x/crypto v0.4.0
- golang.org/x/exp v0.0.0-20221205204356-47842c84f3db
- golang.org/x/mod v0.7.0
- golang.org/x/net v0.4.0
- golang.org/x/sync v0.1.0
- golang.org/x/sys v0.3.0
- golang.org/x/text v0.5.0
- golang.org/x/tools v0.3.0
- google.golang.org/protobuf v1.28.1
- gopkg.in/ini.v1 v1.67.0
- gopkg.in/yaml.v3 v3.0.1
- lukechampine.com/blake3 v1.1.7
- nhooyr.io/websocket v1.8.7
- 857 dependencies
- fabric ==2.6.0
- tmux *