https://github.com/cgcl-codes/morphdag-prototype

Released code of the MorphDAG prototype (version 2.0)

https://github.com/cgcl-codes/morphdag-prototype

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
Last synced: 10 months ago · JSON representation

Repository

Released code of the MorphDAG prototype (version 2.0)

Basic Info
  • Host: GitHub
  • Owner: CGCL-codes
  • License: mit
  • Language: Go
  • Default Branch: master
  • Homepage:
  • Size: 340 KB
Statistics
  • Stars: 9
  • Watchers: 3
  • Forks: 1
  • Open Issues: 0
  • Releases: 0
Created about 2 years ago · Last pushed over 1 year ago
Metadata Files
Readme License

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

CGCL/SCTS/BDTS Lab

GitHub Events

Total
  • Watch event: 1
  • Push event: 2
Last Year
  • Watch event: 1
  • Push event: 2

Dependencies

go.mod go
  • 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
go.sum go
  • 857 dependencies
benchmark/requirements.txt pypi
  • fabric ==2.6.0
  • tmux *