linera-protocol README

The project's README from github.com/linera-io/linera-protocol. As one markdown file: README.md.

License Build Status for Docker Build Status for Rust Build Status for Documentation Twitter Discord

Linera is a decentralized blockchain infrastructure designed for highly scalable, secure, low-latency Web3 applications.

Documentation

Visit our developer page and read our whitepaper to learn more about the Linera protocol.

Repository Structure

The main crates and directories of this repository can be summarized as follows: (listed from low to high levels in the dependency graph)

Prerequisites

See INSTALL.md for software requirements to develop in this repo.

Quickstart with the Linera CLI tool

The following commands set up a local test network and run some transfers between the microchains owned by a single wallet.

# Make sure to compile the Linera binaries and add them in the $PATH.
# cargo build -p linera-storage-service -p linera-service --bins
export PATH="$PWD/target/debug:$PATH"

# Import the optional helper function `linera_spawn`.
source /dev/stdin <<<"$(linera net helper 2>/dev/null)"

# Run a local test network with the default parameters and a number of microchains
# owned by the default wallet. This also defines `LINERA_TMP_DIR`.
linera_spawn \
linera net up --with-faucet --faucet-port 8080

# Remember the URL of the faucet.
FAUCET_URL=http://localhost:8080

# If you're using a testnet, start here and run this instead:
#   LINERA_TMP_DIR=$(mktemp -d)
#   FAUCET_URL=https://faucet.testnet-XXX.linera.net  # for some value XXX

Enable logs for user applications:

export LINERA_APPLICATION_LOGS=true

Set the path of the future wallet:

export LINERA_WALLET="$LINERA_TMP_DIR/wallet.json"
export LINERA_KEYSTORE="$LINERA_TMP_DIR/keystore.json"
export LINERA_STORAGE="rocksdb:$LINERA_TMP_DIR/client.db"

# Initialize a new user wallet.
linera wallet init --faucet $FAUCET_URL

# Request chains.
INFO1=($(linera wallet request-chain --faucet $FAUCET_URL))
INFO2=($(linera wallet request-chain --faucet $FAUCET_URL))
CHAIN1="${INFO1[0]}"
ACCOUNT1="${INFO1[1]}"
CHAIN2="${INFO2[0]}"
ACCOUNT2="${INFO2[1]}"

# Show the different chains tracked by the wallet.
linera wallet show

# Query the chain balance of some of the chains.
linera query-balance "$CHAIN1"
linera query-balance "$CHAIN2"

# Transfer 10 units then 5 back.
linera transfer 10 --from "$CHAIN1" --to "$CHAIN2"
linera transfer 5 --from "$CHAIN2" --to "$CHAIN1"

# Query balances again.
linera query-balance "$CHAIN1"
linera query-balance "$CHAIN2"

# Now let's fund the user balances.
linera transfer 5 --from "$CHAIN1" --to "$ACCOUNT1@$CHAIN1"
linera transfer 2 --from "$ACCOUNT1@$CHAIN1" --to "$ACCOUNT2@$CHAIN2"

# Query user balances again.
linera query-balance "$ACCOUNT1@$CHAIN1"
linera query-balance "$ACCOUNT2@$CHAIN2"

More complex examples may be found in our developer manual as well as the example applications in this repository.

Contributing

We welcome contributions from the community! If you'd like to contribute to the Linera protocol:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

For detailed guidelines, see our contribution guide.

linera-protocol (linera-io/linera-protocol)

Searching Database…

Что это?Linera — это децентрализованная блокчейн-инфраструктура, созданная для высокомасштабируемых, безопасных Web3-приложений с низкой задержкой. Она использует архитектуру микроцепочек, где каждый пользователь может владеть собственной цепочкой.
Это блокчейн-протокол, SDK или и то, и другое?И то, и другое: полноценная реализация протокола (крейты core, chain, storage и rpc) и Rust SDK (linera-sdk) для написания приложений на WebAssembly (смарт-контрактов), которые работают в этой сети.
Как запустить тестовую сеть?Используйте инструмент командной строки Linera: он разворачивает локальную тестовую сеть и позволяет делать переводы между микроцепочками, принадлежащими одному кошельку, с настраиваемым путём к кошельку.
Что нужно установить перед сборкой этого репозитория?Нужны программные требования из INSTALL.md в репозитории для разработки на Linera, а также набор инструментов Rust, так как весь протокол написан на Rust и компилируется в Wasm.
Где найти более сложные примеры и документацию, если краткого руководства недостаточно?Более сложные примеры находятся в руководстве для разработчиков и в папке с примерами приложений, включённой в этот репозиторий.
Что такое микроцепочка в Linera?Это легковесная цепочка, которой может владеть отдельный пользователь или приложение; протокольные крейты (linera-chain, linera-core) отвечают за её блоки, сертификаты и обмен сообщениями между цепочками.
С какого крейта лучше начать, чтобы понять выполнение?linera-execution хранит постоянные данные и логику запуска приложений Linera; в графе зависимостей он находится между linera-chain и linera-storage.
Можно ли запустить клиент Linera в браузере?Да, linera-client — общая библиотека, которую используют кошелёк из командной строки и сервис узла, а также она лежит в основе веб-клиента в linera-web.
Как устроена настройка прокси и валидатора?linera-service содержит исполняемые файлы для кошельков командной строки, прокси (фронтенд валидатора) и серверов, а linera-rpc задаёт схемы сообщений, которые они используют для связи.
What are similar projects?fuel-core, WasmEdge, go-ethereum, diem, nuvex, fuels-rs, eos, TrustMint
Creator
linera-io
Size
238.7 MB
Stars
32.1K
Updated
CommitSep 18
Age
4y
Commits · 90 Days