August 12, 2022

SEI. Documentation [RUS Version]



Введение

Обзор

Цепочка первого уровня, специально разработанная для книги ордеров


Самая быстрая инфраструктура книги ордеров в криптовалюте.

Sei - это самая быстрая ордерная книга L1 блокчейна. Он построен с использованием Cosmos SDK и ядра Tendermint и имеет встроенный модуль центрального лимита ордеров (ЦЛО). Децентрализованные приложения, созданные на базе Sei, могут опираться на инфраструктуру Sei ЦЛО, а другие блокчейны на базе Cosmos могут использовать ЦЛО Sei в качестве общего центра ликвидности и создавать рынки для любых активов.

Модель общей ликвидности Sei

Созданная с учетом пожеланий разработчиков и пользователей, Sei служит инфраструктурой и центром общей ликвидности для следующего поколения DeFi. Приложения могут легко подключаться к инфраструктуре ордеров Sei и получать доступ к общей ликвидности от других приложений. В целях повышения удобства разработчиков Sei интегрировала модуль wasmd для поддержки смарт-контрактов CosmWasm.

Команда Sei

Команда Sei состоит из людей с тремя типами опыта: первый - это старшие инженеры из Robinhood, Databricks, Airbnb, которые знают все тонкости построения цепочки. Вторая группа - это группа Cosmos OGs, которые годами ориентируются в экосистеме. Третья группа имеет большой опыт работы в TradFi в Goldman и других компаниях и будет работать над устранением разрывов между DeFi, институтами и основным потоком.


Почему Sei

Sei поддерживает смарт-контракты CosmWasm и интеграцию с другими цепочками IBC


В Sei мы создаем лучшую инфраструктуру внутрицепочечных ордеров. Sei была оптимизирована для обеспечения скорости, стабильности и экономической эффективности. Это открывает путь к созданию совершенно нового набора внутрицепочечных продуктов DeFi. Существующие L1 общего назначения не могут предложить эти три компонента, жизненно важных для масштабируемых, долгосрочных центральных лимитных ордерных книг (ЦЛОК), и поэтому ограничивают текущие возможности DeFi. Для масштабирования ордерных книг на цепочке, сама базовая цепочка должна быть, в первую очередь, оптимизирована для их обслуживания.

Смарт-контракты

Sei использует модуль wasm, чтобы облегчить разработчикам создание приложений на основе Sei. Разработчики могут использовать библиотеку CosmWasm на основе Rust для создания децентрализованных приложений. Это дает разработчикам множество преимуществ:

  1. CosmWasm является зрелой и используется многими блокчейнами. Как следствие, это очень стабильная, не имеющая ошибок библиотека с обширной экосистемой разработчиков.
  2. CosmWasm был создан для решения многих проблем разработки, с которыми сталкиваются другие экосистемы. Она проще, чем разработка на Solana, и более безопасна, чем Solidity.

Модуль DEX

Sei создал новый модуль dex, который позволяет смарт-контрактам Cosmwasm использовать базовый ЦЛО для более глубокой ликвидности.


Центральная Лимитная Ордерная Книга

Сочетание безопасности и децентрализации внутри сети, с быстротой и эффективностью вне сети


Нативная центральная лимитная ордерная книга Sei сочетает в себе безопасность и децентрализацию на цепочке с быстротой и эффективностью вне цепочки.

Большинство финансовых приложений в традиционных финансах используют ЦЛО для создания рынков. Однако в децентрализованных финансах более популярна модель автоматизированного маркет-мейкера (AMM), поскольку она не требует постоянного обновления ордеров и способна облегчить проведение сделок независимо от ликвидности рынка.

Sei обещает низкую комиссию за транзакции и работает вместе с маркет-мейкерами для создания большей ликвидности, предлагая при этом децентрализованную торговлю на основе книги заявок без каких-либо разрешений. Это открывает множество вариантов использования, которые не могут быть реализованы с помощью AMM.

Зачем строить цепочку оредрной книги?

Учитывая низкое проскальзывание, узкие спреды и общую более высокую эффективность капитала, ордерные книги обеспечивают гораздо лучший опыт торговли по сравнению с АММ. AMM были созданы для того, чтобы обойти недостатки цепочек общего назначения, на которых они были построены. С Sei необходимость в компромиссах отпадает. Возьмем, к примеру, рынки деривативов. Деривативы составляют значительную часть всего криптовалютного рынка, но их проникновение на рынок на цепочке очень незначительно, несмотря на то, что они подвергаются значительному контролю со стороны регуляторов, что должно быть более чем достаточным стимулом для перехода на цепочку.

Ограничивающим фактором, препятствующим успеху деривативов на цепочке, является коллективный провал ордерных книг, построенных на блокчейнах общего назначения. Блокчейн, лежащий в основе Sei, создан специально для ордерной книги, который он поддерживает, и поэтому является фундаментально масштабируемым решением, поддерживающим самые эффективные деривативные рынки on-chain в криптовалюте.


Экосистема Sei

Sei обеспечивает сверхвысокую производительность приложений DeFi


Sei поддерживает сверхвысокопроизводительные приложения DeFi.

Sei - это блокчейн L1 со встроенной внутрицепочечной ордерной книгой, которая обеспечивает смарт-контрактам легкий доступ к общей ликвидности. Архитектура Sei позволяет создавать составные приложения, сохраняющие модульность.

Sei служит связующим ядром экосистемы, обеспечивая превосходную надежность и сверхвысокую скорость транзакций для партнеров экосистемы, каждый из которых обладает собственной функциональностью и пользовательским опытом. Любой может создать приложение DeFi, использующее ликвидность Sei, и вся экосистема получает выгоду.

Разработчики, трейдеры и пользователи могут подключаться к Sei в качестве партнеров экосистемы, получая выгоду от общей ликвидности и децентрализованных финансовых примитивов.


Стройте вместе с нами!


Если вы заинтересованы в строительстве на Сей:

Отправьте нам письмо на [email protected]

Напишите нам в Twitter https://twitter.com/SeiNetwork


Cosmos

Почему Cosmos

Cosmos - это постоянно расширяющаяся экосистема взаимосвязанных приложений и услуг, созданная для децентрализованного будущего. Разработчики могут использовать Cosmos для создания полностью независимых блокчейнов, ориентированных на конкретные приложения, которые могут легко соединяться между собой. Это означает, что, в отличие от других популярных сегодня блокчейнов, они больше не обязаны существовать в качестве смарт-контрактов на чужих цепочках. Они могут избежать дорогостоящих транзакционных издержек и перегруженности сети, установив собственные правила и масштабируясь для широкого использования. Это имеет значительные последствия для будущего децентрализованных финансов (DeFi), невзаимозаменяемых токенов (NFTs), игр, автономных организаций, социальных сетей и рыночных площадок, а также для долгосрочного роста технологии блокчейн, интернета стоимости и экономики собственности, в которой каждый имеет свою долю. Cosmos - это первая полностью свободная платформа, которая позволяет обмениваться ценностями, хранить и защищать их между сторонами, не полагаясь на централизованные серверы. Интероперабельность, автономность, сотрудничество и инновации - это то, что делает Cosmos интернет блокчейном.

Sei занимает уникальное положение, чтобы помочь новому поколению новых пользователей присоединиться к экосистеме Cosmos. Sei использует Cosmos SDK и его ориентацию на горизонтальное масштабирование для создания чрезвычайно удобной для разработчиков среды. Используя блокчейн, направленный на ордера, разработчики могут создавать высокопроизводительные и капиталоэффективные приложения DeFi, которыми могут наслаждаться пользователи со всего мира. Такое сочетание высококачественных dapps, глубокой ликвидности и лучших в своем классе нативных мостовых решений создаст эффект маховика, который приведет к росту всей экосистемы Cosmos.

Узнать больше: экосистема Cosmos


Технические характеристики


Cosmos SDK - это самая популярная в мире платформа для создания блокчейнов для конкретных приложений. Cosmos SDK - это фреймворк с открытым исходным кодом для создания публичных Proof-of-Stake (PoS) с несколькими активами, таких как Cosmos Hub, а также блокчейнов с разрешенным Proof-of-Authority (PoA). Цель состоит в том, чтобы позволить разработчикам легко создавать пользовательские блокчейны с нуля, которые могут нативно взаимодействовать с другими блокчейнами. Cosmos SDK задуман как npm-подобный фреймворк для создания безопасных блокчейн-приложений на базе консенсусного механизма Tendermint BFT. Блокчейн на основе SDK строится из составных модулей (в основном) с открытым исходным кодом, доступных для использования любому разработчику. Будучи очень безопасной средой, Cosmos SDK уже использовался для создания многих блокчейн-приложений, таких как Cosmos Hub, IRIS Hub, Binance Chain, Juno, Crypto.com и многих других.

Особенности SDK включают:

  • модульность для настройки блокчейна под конкретные требования пользователя;
  • масштабируемость для запуска параллельных цепочек;
  • совместимость для связи с другими блокчейнами через модуль IBC;
  • безопасность с помощью брандмауэров контроля доступа;
  • модуль PoS в качестве надежной основы;
  • суверенитет для внесения предложений и голосования по модернизации блокчейна с помощью модуля управления;
  • сообщество разработчиков с открытым исходным кодом;
  • использование преимуществ экосистемы Golang для написания dApps на Go.

Узнайте больше: Cosmos SDK

Преимущества Cosmos SDK

Используя Cosmos SDK для контроля над всем вертикальным блокчейн-стеком, Sei не только оптимизирует его под специфические потребности ордербука и обеспечивает масштабируемость деривативных рынков на цепочке, но и, сохраняя базовый контроль над стеком, может обеспечить фантастический UI/UX. От начала и до конца пользователям будет предоставлен самый беспроблемный опыт работы на цепочке.


CosmWasm


CosmWasm - это новая платформа смарт-контрактов, созданная для экосистемы Cosmos. CosmWasm написан как модуль, который может быть подключен к Cosmos SDK. Это означает, что любой, кто в настоящее время создает блокчейн с использованием Cosmos SDK, может быстро и легко добавить поддержку смарт-контрактов CosmWasm в свою цепочку, не изменяя существующую логику. Разработчики могут использовать знания Rust, мультипарадигмального языка программирования общего назначения с реальной поддержкой IDE. Смарт-контракты на CosmWasm могут работать на нескольких цепочках, используя протокол IBC.

Ключевые особенности:

  • тесная интеграция с Cosmos SDK и экосистемой Cosmos;
  • безопасная архитектура, позволяющая избежать всех векторов атак, присутствующих в Ethereum;
  • развитый инструментарий для разработки и тестирования смарт-контрактов.

Интеграция с IBC планируется одновременно с Cosmos Hub.

Узнайте больше: CosmWasm


Связь между блокчейнами


IBC - это сквозной, ориентированный на соединение протокол с состоянием для безопасной, упорядоченной и аутентифицированной связи между модулями отдельных распределенных бухгалтерских книг. IBC предназначен для взаимодействия между разнородными бухгалтерскими книгами, расположенными в неизвестной динамической топологии, работающими с различными алгоритмами консенсуса и машинами состояний. Протокол реализует это путем определения достаточного набора структур данных, абстракций и семантики протокола связи, которые, будучи реализованы участвующими в протоколе бухгалтерскими книгами, позволят им безопасно взаимодействовать. IBC не зависит от полезной нагрузки и обеспечивает примитивную асинхронную связь между бухгалтерскими книгами, которую можно использовать в качестве строительного блока в самых разных приложениях. Именно так общаются приложения и сервисы Cosmos, что делает его центральным элементом концепции Cosmos. Благодаря IBC пользователи могут свободно обмениваться активами и данными между суверенными, децентрализованными блокчейнами. Уникальность IBC заключается в том, что она отделяет "прикладной уровень" от "транспортного и сетевого уровня". Это означает, что IBC определяет, как данные отправляются и проверяются между блокчейнами, но не определяет, что это за данные и как они должны быть структурированы. Это отличает IBC от других решений по операционной совместимости, которые требуют гораздо большей стандартизации на прикладном уровне.

Узнать больше: IBC протокол


Cмарт-контракты и локальное развитие

Настройка локальной сети

Начало

В настоящее время Sei работает с golang 1.18. Вам необходимо установить golang локально, прежде чем переходить к следующему шагу.

Найти последнюю версию здесь и загрузить репозиторий Sei

git clone --depth 1 --branch <tag_name> https://github.com/sei-protocol/sei-chain.git
Здесь нужно заменить <tag_name> на имя тега вашего благоприятного релиза. Например, 1.0.0beta.
Если вы получите ошибку "Permission denied (publickey)", то убедитесь, что вы правильно сгенерировали SSH-ключ и добавили его в свой аккаунт на github. Если это не помогло, то пройдитесь по оставшейся части документации по отладке этой проблемы

Использование seid, внутреннего инструмента Sei, является предпочтительным способом запуска Sei local.

Seid (внутренний инструмент)


Создание и инициирование Sei на местном уровне

Сначала создайте инструмент

cd sei-chain
make install

Убедитесь, что seid доступен, будь то добавление его в GOPATH в PATH (1) или создание псевдонима (2).

1. Добавление GOPATH в ваш PATH

export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin


2. Создание псевдонима для seid

Добавьте псевдоним seid к вашему сценарию оболочки и выполните (`source`) оболочку:

// example on ubuntu
alias seid="/home/ubuntu/go/bin/seid"


Если вы уже запускали цепочку ранее, у вас могут остаться остатки. Выполните следующие действия, чтобы сбросить состояние.

sudo -S rm -r ~/.sei/
seid tendermint unsafe-reset-all


Вы должны увидеть результаты, соответствующие следующим, указывающие на то, что предыдущие записи цепочки были аннулированы:

4:22PM INF Removed all blockchain history dir=/Users/$username/.sei/data
4:22PM INF Generated private validator file keyFile=/Users/$username/.sei/config/priv_validator_key.json stateFile=/Users/$username/.sei-chain/data/priv_validator_state.json


Затем инициализируйте цепочку. При этом создается поле генезиса:

seid init $MONIKER --chain-id sei-chain


Sei local должен быть успешно инициирован:

{"app_message":{"auth":{"accounts":[],"params":{"max_memo_characters":"256","sig_verify_cost_ed25519":"590","sig_verify_cost_secp256k1":"1000","tx_sig_limit":"7","tx_size_cost_per_byte":"10"}},"bank":{"balances":[],"denom_metadata":[],"params":{"default_send_enabled":true,"send_enabled":[]},"supply":[]},"capability":{"index":"1","owners":[]},"crisis":{"constant_fee":{"amount":"1000","denom":"stake"}},"dex":{"lastEpoch":"0","longBookList":[],"params":{},"shortBookList":[],"twapList":[{"assetDenom":"luna","lastEpoch":"0","priceDenom":"stake","prices":["105"],"twapPrice":"105"},{"assetDenom":"luna","lastEpoch":"0","priceDenom":"ust","prices":["105"],"twapPrice":"105"}]},"distribution":{"delegator_starting_infos":[],"delegator_withdraw_infos":[],"fee_pool":{"community_pool":[]},"outstanding_rewards":[],"params":{"base_proposer_reward":"0.010000000000000000","bonus_proposer_reward":"0.040000000000000000","community_tax":"0.020000000000000000","withdraw_addr_enabled":true},"previous_proposer":"","validator_accumulated_commissions":[],"validator_current_rewards":[],"validator_historical_rewards":[],"validator_slash_events":[]},"epoch":{"epoch":{"current_epoch":"0","current_epoch_height":"0","current_epoch_start_time":"2022-05-15T23:24:58.835910Z","epoch_duration":"60s","genesis_time":"2022-05-15T23:24:58.835910Z"},"params":{}},"evidence":{"evidence":[]},"feegrant":{"allowances":[]},"genutil":{"gen_txs":[]},"gov":{"deposit_params":{"max_deposit_period":"172800s","min_deposit":[{"amount":"10000000","denom":"stake"}]},"deposits":[],"proposals":[],"starting_proposal_id":"1","tally_params":{"quorum":"0.334000000000000000","threshold":"0.500000000000000000","veto_threshold":"0.334000000000000000"},"votes":[],"voting_params":{"voting_period":"172800s"}},"ibc":{"channel_genesis":{"ack_sequences":[],"acknowledgements":[],"channels":[],"commitments":[],"next_channel_sequence":"0","receipts":[],"recv_sequences":[],"send_sequences":[]},"client_genesis":{"clients":[],"clients_consensus":[],"clients_metadata":[],"create_localhost":false,"next_client_sequence":"0","params":{"allowed_clients":["06-solomachine","07-tendermint"]}},"connection_genesis":{"client_connection_paths":[],"connections":[],"next_connection_sequence":"0","params":{"max_expected_time_per_block":"30000000000"}}},"mint":{"minter":{"annual_provisions":"0.000000000000000000","inflation":"0.130000000000000000"},"params":{"blocks_per_year":"6311520","goal_bonded":"0.670000000000000000","inflation_max":"0.200000000000000000","inflation_min":"0.070000000000000000","inflation_rate_change":"0.130000000000000000","mint_denom":"stake"}},"params":null,"slashing":{"missed_blocks":[],"params":{"downtime_jail_duration":"600s","min_signed_per_window":"0.500000000000000000","signed_blocks_window":"100","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"},"signing_infos":[]},"staking":{"delegations":[],"exported":false,"last_total_power":"0","last_validator_powers":[],"params":{"bond_denom":"stake","historical_entries":10000,"max_entries":7,"max_validators":100,"unbonding_time":"1814400s"},"redelegations":[],"unbonding_delegations":[],"validators":[]},"transfer":{"denom_traces":[],"params":{"receive_enabled":true,"send_enabled":true},"port_id":"transfer"},"upgrade":{},"vesting":{},"wasm":{"codes":[],"contracts":[],"gen_msgs":[],"params":{"code_upload_access":{"address":"","permission":"Everybody"},"instantiate_default_permission":"Everybody","max_wasm_code_size":"1228800"},"sequences":[]}},"chain_id":"seisei-chain","gentxs_dir":"","moniker":"demo","node_id":"5e145a4dff089c72e73fc63c45e036947d126150"}


Создайте и настройте свою учетную запись:

export ACCOUNT_NAME="YOUR_ACCOUNT_NAME_HERE"
seid keys add $ACCOUNT_NAME


Это позволит создать новую учетную запись локально и отобразить ее адрес и мнемонику:

- name: $ACCOUNT_NAME
  type: local
  address: sei1ep9jyk9kydjz0fhadm7rzy6pc9ga7tdt4d26xn
  pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Ai3obIQZXAmdgDSw7p1awFIPGK9b7cu/SfJM6nbc+hV/"}'
  mnemonic: ""
  

**Important** write this mnemonic phrase in a safe place.
It is the only way to recover your account if you ever forget your password.
some mnemonic words some mnemonic words some mnemonic words some mnemonic words some mnemonic words 
Store the shown account address into local env variable and add it as the genesis account to the chain:
export ACCOUNT_ADDRESS="ADDRESS_OF_YOUR_ACCOUNT"
seid add-genesis-account $ACCOUNT_ADDRESS 100000000000000000000usei
ADDRESS_OF_YOUR_ACCOUNT будет адрес, отображаемый предыдущей командой (в данном примере seiep9jyk9kydjz0fhadm7rzy6pc9ga7tdt4d26xn).


Самостоятельное вхождение в сеть:

seid gentx $ACCOUNT_NAME 70000000000000000000usei --chain-id sei-chain


Затем соберите транзакцию генезиса:

seid collect-gentxs


Вы должны увидеть транзакцию genesis, похожую на следующую:

{"app_message":{"auth":{"accounts":[{"@type":"/cosmos.auth.v1beta1.BaseAccount","account_number":"0","address":"cosmos1njgca0khra0a6y4c4j6eckzwq4jtc24hvd0s2e","pub_key":null,"sequence":"0"},{"@type":"/cosmos.auth.v1beta1.BaseAccount","account_number":"0","address":"cosmos1ep9jyk9kydjz0fhadm7rzy6pc9ga7tdt4d26xn","pub_key":null,"sequence":"0"}],"params":{"max_memo_characters":"256","sig_verify_cost_ed25519":"590","sig_verify_cost_secp256k1":"1000","tx_sig_limit":"7","tx_size_cost_per_byte":"10"}},"bank":{"balances":[{"address":"cosmos1njgca0khra0a6y4c4j6eckzwq4jtc24hvd0s2e","coins":[{"amount":"100000000000000000000","denom":"stake"}]},{"address":"cosmos1ep9jyk9kydjz0fhadm7rzy6pc9ga7tdt4d26xn","coins":[{"amount":"100000000000000000000","denom":"stake"}]}],"denom_metadata":[],"params":{"default_send_enabled":true,"send_enabled":[]},"supply":[]},"capability":{"index":"1","owners":[]},"crisis":{"constant_fee":{"amount":"1000","denom":"stake"}},"dex":{"lastEpoch":"0","longBookList":[],"params":{},"shortBookList":[],"twapList":[{"assetDenom":"luna","lastEpoch":"0","priceDenom":"stake","prices":["105"],"twapPrice":"105"},{"assetDenom":"luna","lastEpoch":"0","priceDenom":"ust","prices":["105"],"twapPrice":"105"}]},"distribution":{"delegator_starting_infos":[],"delegator_withdraw_infos":[],"fee_pool":{"community_pool":[]},"outstanding_rewards":[],"params":{"base_proposer_reward":"0.010000000000000000","bonus_proposer_reward":"0.040000000000000000","community_tax":"0.020000000000000000","withdraw_addr_enabled":true},"previous_proposer":"","validator_accumulated_commissions":[],"validator_current_rewards":[],"validator_historical_rewards":[],"validator_slash_events":[]},"epoch":{"epoch":{"current_epoch":"0","current_epoch_height":"0","current_epoch_start_time":"2022-05-15T23:24:58.835910Z","epoch_duration":"60s","genesis_time":"2022-05-15T23:24:58.835910Z"},"params":{}},"evidence":{"evidence":[]},"feegrant":{"allowances":[]},"genutil":{"gen_txs":[{"auth_info":{"fee":{"amount":[],"gas_limit":"200000","granter":"","payer":""},"signer_infos":[{"mode_info":{"single":{"mode":"SIGN_MODE_DIRECT"}},"public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Ai3obIQZXAmdgDSw7p1awFIPGK9b7cu/SfJM6nbc+hV/"},"sequence":"0"}]},"body":{"extension_options":[],"memo":"[email protected]:26656","messages":[{"@type":"/cosmos.staking.v1beta1.MsgCreateValidator","commission":{"max_change_rate":"0.010000000000000000","max_rate":"0.200000000000000000","rate":"0.100000000000000000"},"delegator_address":"cosmos1ep9jyk9kydjz0fhadm7rzy6pc9ga7tdt4d26xn","description":{"details":"","identity":"","moniker":"demo","security_contact":"","website":""},"min_self_delegation":"1","pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"wYmGjeAUx9MOeO80b92Jg6FUuzmSwN1Xi1F42pLVHWM="},"validator_address":"cosmosvaloper1ep9jyk9kydjz0fhadm7rzy6pc9ga7tdtse702q","value":{"amount":"70000000000000000000","denom":"stake"}}],"non_critical_extension_options":[],"timeout_height":"0"},"signatures":["BtnsRzsdTGeNtAtRv2JrgCecfQEYusz9USliMf+8ShlS5qrVY7a3FUPDbfubJPNA1bExiKDzeIubqQFSlE5WzA=="]}]},"gov":{"deposit_params":{"max_deposit_period":"172800s","min_deposit":[{"amount":"10000000","denom":"stake"}]},"deposits":[],"proposals":[],"starting_proposal_id":"1","tally_params":{"quorum":"0.334000000000000000","threshold":"0.500000000000000000","veto_threshold":"0.334000000000000000"},"votes":[],"voting_params":{"voting_period":"172800s"}},"ibc":{"channel_genesis":{"ack_sequences":[],"acknowledgements":[],"channels":[],"commitments":[],"next_channel_sequence":"0","receipts":[],"recv_sequences":[],"send_sequences":[]},"client_genesis":{"clients":[],"clients_consensus":[],"clients_metadata":[],"create_localhost":false,"next_client_sequence":"0","params":{"allowed_clients":["06-solomachine","07-tendermint"]}},"connection_genesis":{"client_connection_paths":[],"connections":[],"next_connection_sequence":"0","params":{"max_expected_time_per_block":"30000000000"}}},"mint":{"minter":{"annual_provisions":"0.000000000000000000","inflation":"0.130000000000000000"},"params":{"blocks_per_year":"6311520","goal_bonded":"0.670000000000000000","inflation_max":"0.200000000000000000","inflation_min":"0.070000000000000000","inflation_rate_change":"0.130000000000000000","mint_denom":"stake"}},"params":null,"slashing":{"missed_blocks":[],"params":{"downtime_jail_duration":"600s","min_signed_per_window":"0.500000000000000000","signed_blocks_window":"100","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"},"signing_infos":[]},"staking":{"delegations":[],"exported":false,"last_total_power":"0","last_validator_powers":[],"params":{"bond_denom":"stake","historical_entries":10000,"max_entries":7,"max_validators":100,"unbonding_time":"1814400s"},"redelegations":[],"unbonding_delegations":[],"validators":[]},"transfer":{"denom_traces":[],"params":{"receive_enabled":true,"send_enabled":true},"port_id":"transfer"},"upgrade":{},"vesting":{},"wasm":{"codes":[],"contracts":[],"gen_msgs":[],"params":{"code_upload_access":{"address":"","permission":"Everybody"},"instantiate_default_permission":"Everybody","max_wasm_code_size":"1228800"},"sequences":[]}},"chain_id":"sei-chain","gentxs_dir":"/Users/cyson/.sei-chain/config/gentx","moniker":"demo","node_id":"5e145a4dff089c72e73fc63c45e036947d126150"}


Следующим шагом будет переопределение валюты знаменателя, используемой для различных функциональных возможностей, для использования:

cat ~/.sei/config/genesis.json | jq '.app_state["crisis"]["constant_fee"]["denom"]="usei"' > ~/.sei/config/tmp_genesis.json && mv ~/.sei/config/tmp_genesis.json ~/.sei/config/genesis.json
cat ~/.sei/config/genesis.json | jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["denom"]="usei"' > ~/.sei/config/tmp_genesis.json && mv ~/.sei/config/tmp_genesis.json ~/.sei/config/genesis.json
cat ~/.sei/config/genesis.json | jq '.app_state["mint"]["params"]["mint_denom"]="usei"' > ~/.sei/config/tmp_genesis.json && mv ~/.sei/config/tmp_genesis.json ~/.sei/config/genesis.json
cat ~/.sei/config/genesis.json | jq '.app_state["staking"]["params"]["bond_denom"]="usei"' > ~/.sei/config/tmp_genesis.json && mv ~/.sei/config/tmp_genesis.json ~/.sei/config/genesis.json


Наконец, запустите цепочку:

seid start

С этого момента будут строиться новые блоки.


Развертывание типового контракта

Общий контракт относится к контракту CosmWasm, который не требует функциональных возможностей от модуля dex Сеи.


Если у вас уже запущена собственная цепочка (см. инструкцию здесь), следующие шаги покажут, как загрузить ваш контракт в эту цепочку. Sei - это сеть с правами доступа, что означает, что в цепочке могут быть развернуты только контракты wasm, за которые проголосовало руководство.

Построение контракта Cosmwasm

Соберите образ. Обратите внимание, что следующие шаги выполняются из вашего контрактного каталога, поэтому они предполагают, что seid находится в вашем $PATH:

cargo build
docker run --rm -v "$(pwd)":/code --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry cosmwasm/rust-optimizer:0.12.5

Предложение по управлению для загрузки контракта

Вернитесь в sei-chain repo и подайте предложение по управлению, чтобы загрузить контракт wasm.

seid tx gov submit-proposal wasm-store artifacts/$CONTRACTNAME.wasm \
 --from $(seid keys show -a $ACCOUNT_NAME) \
 --run-as $(seid keys show -a $ACCOUNT_NAME) \
 --title "<Enter title proposal title for uploading of wasm contract>" \
 --description "<Enter description of proposal and contract>" \
 --chain-id sei-chain \
 --instantiate-everybody "false" \
 --instantiate-only-address $(seid keys show -a $ACCOUNT_NAME) \
 --broadcast-mode=block \
 --gas=500000 \
 --fees=10000000usei

Более подробно о каждом из флагов и деталях инстанцирования/исполнения контракта можно узнать на сайте https://docs.cosmwasm.com/tutorials/governance/#submit-proposal.

Голосование по предложению об управлении

Once the governance proposal has been submitted, it must be approved by governance. Find the proposal id and vote on it

seid tx gov vote [proposal-id] yes --from $ACCOUNT_NAME

Заключение договора

Как только ваше предложение будет одобрено, вы сможете создать свой контракт.

Обратите внимание, что в этом примере $CONTRACT_ID равен 1, а $LABEL - любое название контракта:

seid tx wasm instantiate $CONTRACT_ID '{}' --chain-id sei-chain --from $ACCOUNT_NAME --gas=4000000 --fees=1000000usei --broadcast-mode=block --label $LABEL --no-admin


Обратите внимание, что часть '{}' - это параметры, которые вы передаете для инстанцирования контракта. В данном примере контракт не принимает никаких параметров, поэтому достаточно '{}'. Для любых контрактов реального мира параметры инстанцирования, скорее всего, будут непустыми. Например, для инстанцирования контракта Vortex необходимо использовать следующие параметры (фактические значения могут быть изменены):

{"whitelist": ["sei1h9yjz89tl0dl6zu65dpxcqnxfhq60wxx8s5kag"],"use_whitelist":false,"admin":"sei1h9yjz89tl0dl6zu65dpxcqnxfhq60wxx8s5kag","limit_order_fee":{"decimal":"0.0001","negative":false},"market_order_fee":{"decimal":"0.0001","negative":false},"liquidation_order_fee":{"decimal":"0.0001","negative":false}}


Вы должны получить ответ, подобный следующему:

height: "2051"
info: ""
logs:
- events:
  - attributes:
    - key: _contract_address
      value: sei1wug8sewp6cedgkmrmvhl3lf3tulagm9hnvy8p0rppz9yjw0g4wtqdxfzff
    - key: code_id
      value: "1"
    type: instantiate
  - attributes:
    - key: action
      value: /cosmwasm.wasm.v1.MsgInstantiateContract
    - key: module
      value: wasm
    - key: sender
      value: cosmos1ep9jyk9kydjz0fhadm7rzy6pc9ga7tdt4d26xn
    type: message
  log: ""
  msg_index: 0
raw_log: '[{"events":[{"type":"instantiate","attributes":[{"key":"_contract_address","value":"cosmos1wug8sewp6cedgkmrmvhl3lf3tulagm9hnvy8p0rppz9yjw0g4wtqdxfzff"},{"key":"code_id","value":"2"}]},{"type":"message","attributes":[{"key":"action","value":"/cosmwasm.wasm.v1.MsgInstantiateContract"},{"key":"module","value":"wasm"},{"key":"sender","value":"cosmos1ep9jyk9kydjz0fhadm7rzy6pc9ga7tdt4d26xn"}]}]}]'
timestamp: ""
tx: null
txhash: 3033A3673367169693157DF4D22D973A012C03A4FBE452E994E4DE87C8628D23


Из вывода видно, что ваш контракт был создан по адресу:

sei1wug8sewp6cedgkmrmvhl3lf3tulagm9hnvy8p0rppz9yjw0g4wtqdxfzff. Этот адрес понадобится вам для любого взаимодействия по контракту.

Выполнение контракта

В этом примере мы отправляем сообщение UpdatePrice, чтобы обновить цену токена на этом контракте оракула.

{
    "update_price": {
        "price": "22", 
        "token_addr": "cosmos16fz9ma2thw3vycca0v9qkezgecusgzza8027z4"
    }
}
seid tx wasm execute $CONTRACT_ADDR '{"update_price": {"price": "22", "token_addr": "$TOKEN_ADDR"}}' --from $ACCOUNT_NAME --gas=4000000 --fees=1000000usei --chain-id sei-chain --broadcast-mode block

Договор о запросе

В этом примере мы отправляем сообщение GetPrice, чтобы получить цену токена на этом контракте оракула.

{
    "get_price15": {
        "token_addr": "cosmos16fz9ma2thw3vycca0v9qkezgecusgzza8027z4"
    }
}
seid query wasm contract-state smart $CONTRACT_ADDR '{"get_price15": {"token_addr": "#TOKEN_ADDR"}}'

Развертывание контракта на обмен

Контракт dex относится к контракту CosmWasm, который намерен использовать функциональные возможности модуля dex Sei.

Разработка контрактов

Чтобы использовать высокоэффективный модуль dex в Sei, контракт CosmWasm должен реализовать следующие интерфейсы SudoMsg:

SudoMsg::Settlement => Default response
SudoMsg::SetFundingPaymentRate => Default response
SudoMsg::BulkOrderPlacements => Response with serialized
                                BulkOrderPlacementsResponse as `data`
SudoMsg::BulkOrderCancellations => Default response
SudoMsg::Liquidation => Response with serialized LiquidationResponse as `data`

со следующими определениями типов данных (официальные библиотеки Sei для этих типов скоро появятся):

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum SudoMsg {
    Settlement {
        epoch: i64,
        entries: Vec<SettlementEntry>,
    },

    SetFundingPaymentRate {
        epoch: i64,
        asset_denom: String,
        price_diff: Decimal,
        negative: bool,
    },

    BulkOrderPlacements {
        orders: Vec<OrderPlacement>,
        deposits: Vec<DepositInfo>,
    },

    BulkOrderCancellations {
        cancellations: Vec<OrderCancellation>,
    },

    Liquidation {
        requests: Vec<LiquidationRequest>,
    },
}

#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema)]
pub struct BulkOrderPlacementsResponse {
    pub unsuccessful_order_ids: Vec<u64>,
}

#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema)]
pub struct LiquidationResponse {
    pub successful_accounts: Vec<String>,
    pub liquidation_orders: Vec<LiquidationOrder>,
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct SettlementEntry {
    pub account: String,
    pub price_denom: String,
    pub asset_denom: String,
    pub quantity: Decimal,
    pub execution_cost_or_proceed: Decimal,
    pub expected_cost_or_proceed: Decimal,
    pub leverage: Decimal,
    pub position_direction: PositionDirection,
    pub position_effect: PositionEffect,
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct OrderPlacement {
    pub id: u64,
    pub account: String,
    pub price_denom: String,
    pub asset_denom: String,
    pub price: Decimal,
    pub quantity: Decimal,
    pub leverage: Decimal,
    pub order_type: OrderType,
    pub position_direction: PositionDirection,
    pub position_effect: PositionEffect,
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct DepositInfo {
    pub account: String,
    pub denom: String,
    pub amount: Decimal,
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct OrderCancellation {
    pub account: String,
    pub price_denom: String,
    pub asset_denom: String,
    pub price: Decimal,
    pub quantity: Decimal,
    pub leverage: Decimal,
    pub position_direction: PositionDirection,
    pub position_effect: PositionEffect,
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct LiquidationRequest {
    pub requestor: String,
    pub account: String,
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct LiquidationOrder {
    pub account: String,
    pub price_denom: String,
    pub asset_denom: String,
    pub quantity: Decimal,
    pub leverage: Decimal,
    pub long: bool,
}


Такие объекты ответа, как BulkOrderPlacementsResponse и LiquidationResponse, должны быть сначала сериализованы как строки JSON, а затем закодированы с помощью base64:

let response = LiquidationResponse{...};
let serialized_json = serde_json::to_string(&response).unwrap();
let base64_json_str = base64::encode(serialized_json);
let binary = Binary::from_base64(base64_json_str.as_ref()).unwrap();

let mut response: Response = Response::new();
response = response.set_data(binary);


Нет никаких требований к конечным точкам execute и query. Тем не менее, по соображениям производительности рекомендуется минимизировать использование execute и строить основную часть логики обмена в вышеупомянутых конечных точках sudo.

Построить/загрузить/заключить договор

То же самое, что и развертывание типового контракта CosmWasm.

Регистрация договора с помощью модуля DEX

Для того чтобы использовать функциональные возможности модуля dex, вам необходимо зарегистрировать свой контракт в модуле dex. Для этого отправьте транзакцию register-contract модулю dex. Например:

seid tx dex register-contract cosmos14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9s4hmalr 1 -y --from=bob --chain-id=sei-chain --fees=10000000ust --gas=500000 --broadcast-mode=block

Не стесняйтесь обращаться к нам, если вам нужна помощь в регистрации договора


Ноды и валидаторы

Присоединение к Testnets

Добавление полной ноды (без валидатора)

Рекомендуемое минимальное оборудование

Требования ID-цепочки

  • 4 ядра (современные процессоры)
  • 32 ГБ RAM sei-testnet-2 (устаревший)
  • 1 ТБ хранилища (SSD или NVME)
  • 8 ядер (современные процессоры)
  • 32 GB RAM sei-devnet-1
  • 1 ТБ хранилища (SSD или NVME)
Эти характеристики являются минимально рекомендуемыми. Поскольку Sei - это платформа смарт-контрактов, ориентированная на ордера, она может быть очень требовательна к аппаратному обеспечению. Валидаторы с низкими характеристиками могут ухудшить производительность блокчейна в целом.

Присоединение к сети

1. Скачать репозиторий Sei

Найти последнюю версию здесь и загрузить репозиторий Sei

git clone https://github.com/sei-protocol/sei-chain.git
cd sei-chain
git checkout <tag_name>
Здесь нужно заменить <tag_name> на имя тега вашего благоприятного релиза. Например, 1.0.6beta.

Использование seid, внутреннего инструмента Sei, является предпочтительным способом запуска Sei local. В настоящее время мы находимся на версии 1.0.6beta.

2. Создайте инструмент

cd sei-chain/
make install
# Verify the version
seid version --long | head
name: sei
server_name: <appd>
version: 1.0.6beta
commit: e3958ff9cc3fa00a12b0c32cf55b635baa0d49bd
Примечание: требуется версия go1.17 или выше.


3. Инициализация и настройка моникера

export MONIKER="YOUR_MONIKER"
# e.g. export MONIKER="validator-phils-node"
seid init $MONIKER --chain-id sei-devnet-1 -o


4. Скачать файл генезиса и адресную книгу

В файле Genesis указываются остатки на счетах и параметры на начало работы сети для использования при воспроизведении транзакций и синхронизации.

Адресная книга содержит список пиров, с которыми ваш узел может связаться, чтобы обнаружить другие узлы в сети.

По умолчанию файлы genesis и addressbook должны быть размещены в ~/.sei/config/genesis.json и ~/.sei/config/addrbook.json, соответственно.

Пример:

# Obtain the genesis file for sei-devnet-1:
curl https://raw.githubusercontent.com/sei-protocol/testnet/master/sei-devnet-1/genesis.json > ~/.sei/config/genesis.json
# Obtain the address book for sei-devnet-1
curl https://raw.githubusercontent.com/sei-protocol/testnet/master/sei-devnet-1/addrbook.json > ~/.sei/config/addrbook.json


Создайте две вкладки. Затем вы можете запустить узел на одной вкладке, а просмотреть состояние или выполнить команды на другой.

seid start
seid status

Теперь ваш узел синхронизируется. Этот процесс может занять много времени. Убедитесь, что вы установили стабильное соединение, чтобы вы могли отлучиться на время синхронизации.


Рекомендуется запускать с systemd. Вы можете использовать этот файл systemd:

[Unit]
Description=Sei Node
After=network.target

[Service]
User=root
Type=simple
ExecStart=/root/go/bin/seid start
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

Добавление узла валидатора

После настройки полного узла, как описано выше, необходимо выполнить еще несколько дополнительных шагов для настройки узла в качестве валидатора. Откройте отдельное окно командной строки и выполните следующие шаги:

1. Получите свой PubKey

Для создания валидатора требуется консенсусный PubKey вашего узла. Выполните следующее:

PUBKEY=$(seid tendermint show-validator)


2. Отправить средства на ваш счет

Вам необходимо создать и добавить учетную запись, если вы этого еще не сделали.

Пожалуйста, свяжитесь с командой Sei в канале discord, чтобы добавить средства на ваш счет.

Вы можете проверить, были ли отправлены средства, выполнив следующую команду:

seid query bank balances $ACCOUNT_ADDRESS


3. Создайте валидатора

Чтобы создать валидатор, выполните следующую команду:

seid tx staking create-validator \
    --amount=1000000usei \
    --pubkey=$PUBKEY \
    --moniker=$MONIKER \
    --chain-id=$CHAIN_ID \
    --from=$ACCOUNT_NAME \
    --commission-rate="0.10" \
    --commission-max-rate="0.20" \
    --commission-max-change-rate="0.01" \
    --min-self-delegation="1" \
    --fees="2000usei"


4. Убедитесь, что ваш валидатор активен

Выполните следующие команды, чтобы убедиться, что ваш валидатор активен

seid query tendermint-validator-set | grep "$(seid tendermint show-validator | jq -r .key)"

Обновления


Все обновления цепи можно найти здесь:

sei-testnet-2 (устаревший)

  • 1.0.2beta->1.0.3beta:
    • 06/10/202216:00 UTCHeight: 153759
    • Тестирование простого обновления
  • 1.0.3beta->1.0.4beta:
    • 06/22/2022 14:30 UTCHeight: 681000
    • Внедрение модуля Oracle
  • 1.0.4beta->1.0.5beta:
    • 06/30/2022 16:30 UTCHeight: 1075040
    • Представляет модуль Oracle Module для воздержания от работы и программной установки конфигураций tendermint.
  • 1.0.5beta->1.0.6beta:
    • 07/04/2022 16:30 UTC Height: 1217302
    • Исправление антхендлера oracle для недействительных txns

sei-devnet-1 (активная тестовая сеть)

  • 1.0.6beta->1.0.7beta-postfix
    • Time: 07/22/2022 15:00 UTC
    • Height: 1133762

atlantic-1 (активная стимулируемая тестовая сеть)

  • 1.0.6beta-val-count-fix-->1.0.7beta-postfix
    • Time: 07/22/2022 16:00 UTC
    • Height: 836963
  • 1.1.0beta-->1.0.7beta-postfix
    • Time: 08/03/2022 15:30 UTC
    • Height: 1862331

Инструкции по обновлению


Вы можете найти различные инструкции по обновлению. Приведенные ниже документы относятся к обновлению до версии 1.0.3beta

Способ 1: Ручной

Когда цепь достигнет высоты обновления, вы столкнетесь со следующим сообщением о панической ошибке:

ERR UPGRADE "1.0.3beta" NEEDED at height: 153759


Затем остановите процесс цепочки и выполните следующие команды:

# Checkout the binary for 1.0.3beta
git clone https://github.com/sei-protocol/sei-chain.git
cd sei-chain/
git fetch --tags -f
git checkout 1.0.3beta
# Build the new tool
make install
# Restart the chain process. Ensure that your GOPATH is in your PATH 
seid start --home ~/.sei

Метод 2: Космовизор

Cosmovisor - это побочная программа / обертка вокруг двоичного файла cosmos sdk, которая может выполнять обновления за вас. На странице есть много информации, поэтому ниже мы приведем только необходимые детали.

Сначала установите cosmovisor:

go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@latest
Примечание: У некоторых людей наблюдаются проблемы с этим. Вы можете попробовать собрать сборку непосредственно из исходников (инструкции)


Cosmovisor использует файл upgrade-info.json и симлинки на различные версии двоичного файла seid для автоматического выполнения обновления. Схема выглядит следующим образом:

~/.sei/cosmovisor
├── current -> genesis or upgrades/<name>
├── genesis
│   └── bin
│       └── seid
└── upgrades
    └── 1.0.3beta
        ├── bin
        │   └── seid
        └── upgrade-info.json

6 directories, 3 files


До миграции каталог current является симлинком на текущую версию seid (genesis/ до миграции и 1.0.3beta после миграции). В каталоге upgrades/ хранятся различные двоичные файлы обновлений, в том числе и для версии 1.0.3beta. Чтобы установить следующую структуру файлов, выполните следующее:

# Export environment variables
DAEMON_RESTART_AFTER_UPGRADE=true 
DAEMON_NAME=seid 
DAEMON_HOME=~/.sei
# Create cosmovisor folder
mkdir -p $DAEMON_HOME/cosmovisor/genesis/bin
# Copy 1.0.0beta seid binary into the genesis folder
cp build/seid $DAEMON_HOME/cosmovisor/genesis/bin
# Instead of running 1.0.0beta with ./build/seid start, you would run it with cosmovisor
cosmovisor run start --home ~/.sei
# Checkout 1.0.1beta branch, build the new seid binary and move it into the upgrade folder
mkdir -p $DAEMON_HOME/cosmovisor/upgrades/1.0.3beta/bin
# Checkout the binary for 1.0.1beta
git clone --depth 1 --branch 1.0.3beta https://github.com/sei-protocol/sei-chain.git
# Build the new tool
cd sei-chain/
make install
cp $(which seid) $DAEMON_HOME/cosmovisor/upgrades/1.0.3beta/bin

Seinami Стимулированный Тестнет

Обзор программы

Готовы ли вы к шторму? Sei запускает свой первый стимулированный тестнет для валидаторов и участников. Мы назвали его "Операция: Seinami.

Прежде чем запустить наш мейннет, мы хотим убедиться, что Sei соответствует всем требованиям, поэтому мы хотим, чтобы ВЫ помогли нам провести стресс-тестирование сети.

Цель операции: Seinami является выявление любых ошибок или недостатков в нашем протоколе до запуска сети. Мы будем выдавать вознаграждения в виде токенов всем участникам, которые выполнят задания и найдут ошибки.


Как будет работать Seinami Стимулированный Тестнет?

Операция: Seinami будет состоять из 4 уникальных действий, каждое из которых имеет свою направленность и цели. В целом, акты предназначены для проверки настройки валидаторов Seinami, удобства использования, безопасности и управления.

Каждый акт будет состоять из четко определенных миссий для валидаторов и участников Seinami Testnet. Полный список миссий для всех актов доступен здесь. Все активные миссии также будут перечислены в верхней левой части целевой страницы Seinami Testnet.

Sei выделил 1% наших токенов на вознаграждения в рамках Testnet.

Чтобы обеспечить разнообразный и представительный состав участников, программа сфокусирована на нескольких темах:

  • Валидация и эксплуатация узлов - выполнение технических задач, связанных с работой валидатора и тестированием основных функций протокола (запуск узла, стресс-тестирование производительности и т.д.).
  • Юзабилити и тестирование функций - целевое тестирование уникальных новых функций Sei. Посмотрим, сможем ли мы сломать экономическую модель (экономические эксплойты, максимальное использование сетевых вознаграждений, атаки сибилов и т.д.)


Дата запуска

Запуск Seinami Testnet запланирован на июль 2022 года, а продолжительность программы составит около 9 недель.

Эти предварительные сроки могут быть изменены, поэтому обязательно присоединяйтесь к Discord и следите за нашими каналами для получения обновлений и объявлений.


Зачем участвовать?

Тестовая сеть Seinami предоставляет уникальные возможности для раннего участия и играет ключевую роль в развитии экосистемы Sei:

  • ✅ Награды за выполнение заданий

Все миссии тестнета оцениваются в определенное количество "очков", которые напрямую соответствуют вознаграждению в токенах $SEI. По окончании тестового периода мы подсчитаем баллы всех валидаторов и участников и распределим вознаграждения в виде токенов.

  • 🤝 Знакомство с Sei

Никаких закрытых бета-версий. Никаких белых списков. Присоединение к Seinami Testnet - единственный и лучший способ ознакомиться с Sei до запуска. Мы хотим дать возможность валидаторам, разработчикам и участникам взаимодействовать с Sei, устанавливая узлы, кошельки, совершая транзакции и голосуя за предложения по управлению.

  • 🏗️ Помощь в формировании протокола

Sei глубоко ценит комментарии, критику и опасения наших первых последователей и участников. Присоединившись к Seinami Testnet, вы сможете предоставлять прямую обратную связь нашей команде и формировать Sei по мере его роста и развития.

Кто имеет право?

Seinami Testnet открыт для участия всех членов сообщества, однако не все участники имеют право на вознаграждение.

Мы приглашаем к участию валидаторов, разработчиков и членов сообщества всех стран, однако следующие группы не будут иметь права на получение вознаграждений:

  • Резиденты США
  • Резиденты запрещенных юрисдикций

Кроме того, несмотря на то, что это действительно соревнование, все должны играть хорошо и быть порядочными по отношению друг к другу. Нарушение Правил участия или Кодекса поведения, использование уязвимостей в программном обеспечении, атаки с помощью социальной инженерии для эксплуатации конкурентов или использование вредоносных программ для атак на других участников является основанием для дисквалификации. Будьте круты, друзья!

Обратите внимание, что для получения вознаграждения необходимо пройти проверку личности.


Как я могу присоединиться?

Просто отправьте эту форму, чтобы зарегистрироваться для участия в Seinami Incentivized Testnet.

Пока вы ждете начала тестового периода, присоединяйтесь к Discord и Telegram, чтобы быть в курсе наших анонсов, или читайте наши документы по настройке валидатора, чтобы запустить свою ноду.


Оставайтесь на связи

Sei Discord будет основным форумом для технических обсуждений, обновлений и поддержки. Однако основные объявления о тестнете будут распространяться по всем социальным каналам, поэтому обязательно следите за ними, чтобы ничего не пропустить!


Sei Документация


Разоблачение:

Программа Seinami Testnet была разработана для привлечения сообщества к тестированию устойчивости и эффективности Сей. Мы оставляем за собой право завершить или продлить программу в любое время по нашему усмотрению и в соответствии с целями программы. В конечном итоге, команда Sei оставляет за собой право по своему усмотрению вознаграждать отдельных лиц в рамках юридических и нормативных требований.


Присоединение к стимулируемому Testnet

Добавление полного узла (без валидатора)

Рекомендуемое минимальное оборудование

Требования ID-цепочки

  • 8 ядер (современные процессоры)
  • 32 ГБ RAM atlantic-1
  • 1 ТБ хранилища (SSD или NVME)
Эти характеристики являются минимально рекомендуемыми. Поскольку Sei - это платформа смарт-контрактов, ориентированная на ордера, она может быть очень требовательна к аппаратному обеспечению. Валидаторы с низкими характеристиками могут ухудшить производительность блокчейна в целом.


Присоединение к сети

1. Скачать репозиторий Sei

Найти последнюю версию здесь и загрузить репозиторий Sei

git clone https://github.com/sei-protocol/sei-chain.git
cd sei-chain
git checkout <tag_name>
Здесь нужно заменить <tag_name> на имя тега вашего благоприятного релиза. Например, 1.0.6beta.

Использование seid, внутреннего инструмента Sei, является предпочтительным способом запуска Sei local.


2. Создайте инструмент

cd sei-chain/
make install
# Verify the version
seid version --long | head
name: sei
server_name: <appd>
version: 1.0.6beta
commit: e3958ff9cc3fa00a12b0c32cf55b635baa0d49bd
Примечание: требуется версия go1.17 или выше.


3. Инициализация и настройка моникера

export MONIKER="YOUR_MONIKER"
# e.g. export MONIKER="validator-phils-node"
seid init $MONIKER --chain-id atlantic-1 -o


4. Загрузите файл genesis и адресную книгу

В файле Genesis указываются остатки на счетах и параметры на начало работы сети для использования при воспроизведении транзакций и синхронизации.

Адресная книга содержит список пиров, с которыми ваш узел может связаться, чтобы обнаружить другие узлы в сети.

По умолчанию файлы genesis и addressbook должны быть размещены в ~/.sei/config/genesis.json и ~/.sei/config/addrbook.json, соответственно.

Пример:

# Obtain the genesis file for atlantic-1:
curl https://raw.githubusercontent.com/sei-protocol/testnet/master/sei-incentivized-testnet/genesis.json > ~/.sei/config/genesis.json
# Obtain the address book for sei-testnet-1
curl https://raw.githubusercontent.com/sei-protocol/testnet/master/sei-incentivized-testnet/addrbook.json > ~/.sei/config/addrbook.json
Файл генезиса стимулируемой тестовой сети будет добавлен за день до Акта-1 (07/11/2022)


Создайте две вкладки. Затем вы можете запустить узел на одной вкладке, а просмотреть состояние или выполнить команды на другой.

seid start
seid status


Теперь ваш узел синхронизируется. Этот процесс может занять много времени. Убедитесь, что вы установили стабильное соединение, чтобы вы могли отлучиться на время синхронизации.


Добавление узла валидатора


После настройки полного узла, как описано выше, необходимо выполнить еще несколько дополнительных шагов для настройки узла в качестве валидатора. Откройте отдельное окно командной строки и выполните следующие шаги:


1. Получите свой PubKey

Для создания валидатора требуется консенсусный PubKey вашего узла. Выполните следующее:

PUBKEY=$(seid tendermint show-validator)


2. Отправить средства на ваш счет

Вам необходимо создать и добавить учетную запись, если вы этого еще не сделали.


Пожалуйста, свяжитесь с командой Sei в канале discord, чтобы добавить средства на ваш счет.

Вы можете проверить, были ли отправлены средства, выполнив следующую команду:

seid query bank balances $ACCOUNT_ADDRESS


3. Создайте валидатор

Чтобы создать валидатор, выполните следующую команду:

seid tx staking create-validator \
    --amount=1000000usei \
    --pubkey=$PUBKEY \
    --moniker=$MONIKER \
    --chain-id=$CHAIN_ID \
    --from=$ACCOUNT_NAME \
    --commission-rate="0.10" \
    --commission-max-rate="0.20" \
    --commission-max-change-rate="0.01" \
    --min-self-delegation="1" \
    --fees="2000usei"


4. Убедитесь, что ваш валидатор активен

Выполните следующие команды, чтобы убедиться, что ваш валидатор активен

seid query tendermint-validator-set | grep "$(seid tendermint show-validator | jq -r .key)"

Все миссии Тестнета

Пожалуйста, перейдите по этой ссылке на страницу "Все миссии Тестнета" в Notion.


Кодекс поведения

Пожалуйста, перейдите по этой ссылке на страницу Кодекса поведения в Notion.


Детали распределения вознаграждений

Пожалуйста, перейдите по этой ссылке на страницу Подробности распределения вознаграждений в Notion.


Основные конечные точки API


Здесь приведены некоторые основные конечные точки API, которые могут быть полезны при настройке узла или валидатора.

В приведенных ниже примерах предполагается, что команды выполняются вместе с процессом узла / валидатора. Однако можно отправить эти запросы на удаленный узел:

  • Для вызовов CLI вы можете указать удаленный узел с помощью флага --node.
  • Для вызовов REST вы можете заменить localhost на IP-адрес удаленного узла


Получить статус узла

CLI

> seid status | jq -r ".NodeInfo"
{
  "protocol_version": {
    "p2p": "8",
    "block": "11",
    "app": "0"
  },
  "id": "c3beb6d42f10311fd453029cb3ee6ac08880d522",
  "listen_addr": "tcp://0.0.0.0:26656",
  "network": "sei-testnet-1",
  "version": "0.34.15",
  "channels": "40202122233038606100",
  "moniker": "phils validator",
  "other": {
    "tx_index": "on",
    "rpc_address": "tcp://127.0.0.1:26657"
  }


REST

> seid status | jq -r ".NodeInfo"
{
  "protocol_version": {
    "p2p": "8",
    "block": "11",
    "app": "0"
  },
  "id": "c3beb6d42f10311fd453029cb3ee6ac08880d522",
  "listen_addr": "tcp://0.0.0.0:26656",
  "network": "sei-testnet-1",
  "version": "0.34.15",
  "channels": "40202122233038606100",
  "moniker": "phils validator",
  "other": {
    "tx_index": "on",
    "rpc_address": "tcp://127.0.0.1:26657"
  }


Получить идентификатор узла

CLI

> seid tendermint show-node-id
89e8fdd427a056fb7b4f5da2d58a4b688feb4b74


REST

> curl localhost:1317/cosmos/base/tendermint/v1beta1/node_info | jq -r ".default_node_info.default_node_id
89e8fdd427a056fb7b4f5da2d58a4b688feb4b74

Получить статус синхронизации

CLI

> seid status | jq -r ".SyncInfo.catching_up"
false


REST

> curl localhost:1317/cosmos/base/tendermint/v1beta1/syncing
{
  "syncing": false
}

Получить последний блок

CLI

> seid query block | jq
{
  "block_id": {
    "hash": "92B93642DCCECFBDFEAE972C67294CF1B3574FAF55F3B24E218990CC4EE28B0A",
    "parts": {
      "total": 1,
      "hash": "5FBD2E43F3A3F6DBD9C9E2021B1505DF3AC74841F7207F479E701FF0726E0EF3"
    }
  },
  "block": {
    "header": {
      "version": {
        "block": "11"
      },
...


REST

> curl localhost:1317/cosmos/base/tendermint/v1beta1/blocks/latest
{
  "block_id": {
    "hash": "krk2QtzOz73+rpcsZylM8bNXT69V87JOIYmQzE7iiwo=",
    "part_set_header": {
      "total": 1,
      "hash": "X70uQ/Oj9tvZyeICGxUF3zrHSEH3IH9HnnAf8HJuDvM="
    }
  },
  "block": {
    "header": {
      "version": {
        "block": "11",
...

Запрос остатка баланса

CLI

> seid query bank balances $ACCOUNT_ADDRESS
balances:
- amount: "29999999999995999900"
  denom: ust
pagination:
  next_key: null
  total: "0"


REST

> curl localhost:1317/bank/balances/$ACCOUNT_ADDRESS
{"height":"4028","result":[
  {
    "denom": "ust",
    "amount": "29999999999995999900"
  }
]}


Получить информацию валидатора

CLI

> seid query tendermint-validator-set
block_height: "3472"
total: "2"
validators:
- address: cosmosvalcons1xrn3ejn56chrv26mfk9vaztef63zptkmygmdxf
  proposer_priority: "39374999999767"
  pub_key:
    type: tendermint/PubKeyEd25519
    value: Cf46GgHIjqEdk5ZeHux/PTWEmWUWnxTFeyJxIzwoxSA=
  voting_power: "70000000000000"


REST

> curl localhost:1317/cosmos/base/tendermint/v1beta1/validatorsets/latest
{
  "block_height": "4156",
  "validators": [
    {
      "address": "cosmosvalcons1xrn3ejn56chrv26mfk9vaztef63zptkmygmdxf",
      "pub_key": {
        "@type": "/cosmos.crypto.ed25519.PubKey",
        "key": "Cf46GgHIjqEdk5ZeHux/PTWEmWUWnxTFeyJxIzwoxSA="
      },
      "voting_power": "70000000000000",
      "proposer_priority": "42656249998811"
    },

Конечные точки модулей

Эти конечные точки доступны на уровне модуля. Вы можете использовать клиент GRPC для выполнения этих вызовов


Конечные точки POST

Для конечных точек POST требуется подписанная транзакция (Tx). Вот пример с использованием клиента cosmjs: https://github.com/sei-protocol/sei-chain/blob/master/oracle/oracle.js.


Ордер Размещения

Модуль: Dex

Эта конечная точка принимает запрос на размещение массового ордера.

rpc PlaceOrders(MsgPlaceOrders) returns (MsgPlaceOrdersResponse);

message MsgPlaceOrders {
  string creator = 1;
  repeated OrderPlacement orders = 2;
  string contractAddr = 3;
  repeated cosmos.base.v1beta1.Coin funds = 5 [
    (gogoproto.nullable) = false,
    (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
  ];
}

message MsgPlaceOrdersResponse {
  repeated uint64 orderIds = 1;
}


Ордер Отмены

Модуль: Dex

Эта конечная точка принимает запрос на отмену массового ордера

rpc CancelOrders(MsgCancelOrders) returns (MsgCancelOrdersResponse);

message MsgCancelOrders {
  string creator = 1;
  repeated OrderCancellation orderCancellations = 2;
  string contractAddr = 3;
}

message MsgCancelOrdersResponse {}


Ликвидация

Модуль: Dex

Эта конечная точка ликвидирует счет

message MsgLiquidation {
  string creator = 1;
  string accountToLiquidate = 2;
  string contractAddr = 3;
}

message MsgLiquidationResponse {}


Совокупный обменный курс предварительного голосования

Модуль: Oracle

Эта конечная точка должна отправить оракулу хэш предварительного голосования для следующего окна голосования.

message MsgAggregateExchangeRatePrevote {
  string hash = 1;
  string feeder = 2;
  string validator = 3;
}

message MsgAggregateExchangeRatePrevoteResponse {}


Совокупное голосование по обменному курсу

Модуль: Oracle

Эта конечная точка используется для отправки ценового голосования оракула для текущего окна голосования. Предоставленные курсы валют должны совпадать с хэшированным предварительным голосованием, предоставленным в предыдущем окне голосования (для текущего окна голосования).

message MsgAggregateExchangeRateVote {
  string salt = 1;
  string exchange_rates = 2;
  string feeder = 3;
  string validator = 4;
}

message MsgAggregateExchangeRateVoteResponse {}

Конечные точки GET

Получение расчетной сделки (не существует?)

Модуль: Dex

Эта конечная точка принимает идентификатор рынка и возвращает сделки, заключенные в последнем блоке.

GetSettledTradesRequest {
  int market_id;
}

GetSettledTradesResponse {
  vector<Order> settled_trades;
}

Получение длинной книги

Модуль: Dex

Эта конечная точка принимает идентификатор рынка и возвращает последнюю книгу (блок) длинных ордеров.

Сервис: codchen.matrixchain.dex.Query
Метод: LongBook
Формат сообщения:

// Request
QueryGetLongBookRequest {
  uint64 id = 1;
}

// Response
QueryGetLongBookResponse {
  LongBook LongBook = 1 [(gogoproto.nullable) = false];
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: codchen.matrixchain.dex.Query
? Choose a method: LongBook
Message json (type ? to see defaults): {"id": 0}

Получение короткой книги

Модуль: Dex

Эта конечная точка принимает идентификатор рынка и возвращает последнюю книгу (блок) коротких ордеров.

Сервис: codchen.matrixchain.dex.Query
Метод: ShortBook
Формат сообщения:

// Request
QueryGetShortBookRequest {
  uint64 id = 1;
}

// Response
QueryGetShortBookResponse {
  ShortBook ShortBook = 1 [(gogoproto.nullable) = false];
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: codchen.matrixchain.dex.Query
? Choose a method: ShortBook
Message json (type ? to see defaults): {"id": 0}

Получение курса обмена

Модуль: Oracle

Эта конечная точка возвращает обменный курс для определенного номинала

Сервис: seiprotocol.seichain.oracle.Query
Метод: Курс обмена
Формат сообщения:

// Request
QueryExchangeRatesRequest {}

// Response
QueryExchangeRateResponse {
  OracleExchangeRate oracle_exchange_rate = 1 [(gogoproto.nullable) = false];
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: seiprotocol.seichain.oracle.Query
? Choose a method: ExchangeRate
Message json (type ? to see defaults): {"denom": "foo"}

Получение курсов обмена

Модуль: Oracle

Эта конечная точка возвращает все активные курсы обмена

Сервис: seiprotocol.seichain.oracle.Query
Метод: Курсы обменов
Формат сообщения:

// Request
QueryExchangeRateRequest {
  string denom = 1;
}

DenomOracleExchangeRatePair {
  string denom = 1;
  OracleExchangeRate oracle_exchange_rate = 2 [(gogoproto.nullable) = false];
}

// Response
QueryExchangeRatesResponse {
  // exchange_rates defines a list of the exchange rate for all whitelisted denoms.
  repeated DenomOracleExchangeRatePair denom_oracle_exchange_rate_pairs = 1;
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: seiprotocol.seichain.oracle.Query
? Choose a method: ExchangeRates
Message json (type ? to see defaults): {}

Получение цели голосования

Модуль: Oracle

Эта конечная точка возвращает все деномы, которые являются объектами голосования для ценовых голосов оракула.

Сервис: seiprotocol.seichain.oracle.Query
Метод: VoteTargets
Формат сообщения:

// Request
QueryVoteTargetsRequest {}

// Response
QueryVoteTargetsResponse {
  repeated string vote_targets = 1;
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: seiprotocol.seichain.oracle.Query
? Choose a method: VoteTargets
Message json (type ? to see defaults): {}

Получение счетчика пропусков

Модуль: Oracle

Эта конечная точка возвращает счетчик пропусков определенного валидатора.

Сервис: seiprotocol.seichain.oracle.Query
Метод: MissCounter
Формат сообщения:

// Request
QueryMissCounterRequest {
  string validator_addr = 1;
}

// Response
QueryMissCounterResponse {
  uint64 miss_counter = 1;
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: seiprotocol.seichain.oracle.Query
? Choose a method: MissCounter
Message json (type ? to see defaults): {"validator_addr": "seivaloperADDR"}


Существуют и другие конечные точки запроса, спецификации которых можно найти здесь: https://github.com/sei-protocol/sei-chain/blob/master/proto/oracle/query.proto


Statesync


Для новых узлов валидатора или полных узлов statesync может помочь сократить время, необходимое для догонки текущего блока, особенно когда история цепочки растет в течение длительного времени.

Вот настройки, которые мы сейчас используем для обрезки sei и моментального снимка для statesync

Настройки обрезки: default

Настройки моментального снимка:

snapshot-interval = 1000
snapshot-keep-recent = 5

Если вы запускаете новый узел, вы можете быстро освоиться в sei цепочках, настроив параметры statesync до начала процесса seid. Ниже приведены инструкции по включению statesync для вашего узла, а также конкретные конфигурации для каждой среды sei chain.


Настройка Statesync

Установите адрес RPC, который вы хотите использовать для statesync:

Адрес RPC, который необходимо установить, зависит от окружения цепочки


Sei Стимулируемый Тестнет

export RPC_ADDRESS="ec2-54-241-77-154.us-west-1.compute.amazonaws.com:26657"


Sei Devnet

Coming Soon!


Получение информации о текущем блоке:

export CURR_HEIGHT=$(curl -s $RPC_ADDRESS/block | jq -r .result.block.header.height) && echo $CURR_HEIGHT


Получить информацию о доверительной высоте и доверительном хэше для предыдущих (1000 в случае обрезки по умолчанию) блоков с snapshot-interva и установить их в TRUST_HEIGHT и TRUST_HASH соответственно

export TRUST_HEIGHT=$(($CURR_HEIGHT-1000)) && echo $TRUST_HEIGHT
export TRUST_HASH=$(curl -s $RPC_ADDRESS/block?height=$TRUST_HEIGHT | jq -r '.result.block_id.hash') && echo $TRUST_HASH


Обновите файл config.toml с RPC_ADDRESS, TRUST_HEIGHT и TRUST_HASH с помощью следующей команды:

sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC_ADDRESS,$RPC_ADDRESS\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.sei/config/config.toml


Сбросьте историю цепочки:

seid tendermint unsafe-reset-all --home $HOME/.sei


Вам также может понадобиться установить узел как постоянный одноранговый:

Устойчивый сверстник для установки различается в зависимости от окружения цепи


Sei Стимулированный Тестнет

peers="c22205240014c51d9c5126c3840315cda50275fd@ec2-54-241-77-154.us-west-1.compute.amazonaws.com:26656"; \
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.sei/config/config.toml


Sei Devnet

Coming Soon!


Теперь вы можете запустить цепочку, и она должна найти снимки и подхватить их. После того, как цепочка будет полностью восстановлена, вы можете отключить statesync, чтобы избежать проблем при перезапуске цепочки в будущем, например, при обновлении:

sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1false|" $HOME/.sei/config/config.toml

Управление

Создание предложений

Участие в управлении Sei путем создания и поддержки новых предложений


Создание нового предложения

Любой желающий может создать предложение по управлению, которое начнет действовать в депозитном периоде и будет переведено в период голосования, как только будет набрана минимальная сумма депозита. Любой желающий может внести свой вклад в предложение в период вклада.

Подать предложение

Чтобы подать новое предложение, вы можете отправить транзакцию с деталями предложения и указанной суммой депозита. Эта сумма депозита не обязательно должна быть больше суммы MinDeposit (минимум для участия в голосовании), но пока общая сумма депозита не будет достигнута, предложение будет находиться в периоде депозита.

Операция подачи предложения должна включать ненулевую положительную сумму депозита


Пример

seid tx gov submit-proposal param-change proposal.json --from {proposer_key}


Предложение по запросу

Вы также можете просмотреть детали существующих предложений и состояние предложения (период внесения депозита, период голосования и т.д.), запросив идентификатор конкретного предложения.

Пример

seid query gov proposal {proposal_id}


Вы также можете запросить автора предложения для указанного предложения, чтобы просмотреть адрес, который первоначально подал предложение.

Пример

seid query gov proposer {proposal_id}


Депозит за предложение

Если созданное предложение находится в периоде ожидания депозита, вы можете пополнить депозит, чтобы внести вклад для перехода предложения в период голосования. Сумма вклада выражается в сумме вклада и жетоне вклада, например 10000sei.

Если предложение не удовлетворяет MinDeposit до окончания депозитного периода, ВСЕ депозиты сгорают

Пример

seid tx gov deposit {proposal_id} {deposit_amount} --from {your_key}


Запрос депозитов

Пользователь может запросить депозит, внесенный по определенному адресу по определенному предложению. Это может быть использовано для просмотра текущей суммы депозита или суммы, внесенной другим счетом.

Пример

seid query gov deposit {proposal_id} {depositor_addr}


Вы также можете запросить все вклады, сделанные для предложения, с помощью отдельной команды запроса.

Пример

seid query gov deposits {proposal_id}

Управление стейкингом

Делегируйте / передавайте свои токены, чтобы получить доступ к управлению и доходности


Делегирование

Когда пользователь хочет передать токены валидаторам, он может выбрать, какому валидатору (валидаторам) он хочет передать токены, и затем получит часть комиссионных, которые валидатор накапливает за счет активной валидации. Когда пользователь делегирует свои токены, они представляются в виде "акций" валидатора, которые не являются взаимозаменяемыми, а представляют собой часть базовых активов, которые накапливает валидатор. По мере того, как валидатор накапливает вознаграждение, акции пользователя представляют больше токенов, и эти токены получаются, когда пользователь "отвязывает" свое делегирование.
Дополнительная информация находится здесь: Delegation Docs


Транзакция

Делегация

Пользователи могут делегировать свои токены валидатору, чтобы тот поставил их на карту и начислил вознаграждение.

Пример

seid tx staking delegate {validator_addr} {amount} --from {your_key} --chain-id {chain_id}


Ределегация

Делегированные активы могут быть переданы другому валидатору путем повторного делегирования, даже если они неликвидны.

Пример

seid tx staking redelegate {source_validator_addr} {destination_validator-addr} {amount} --from {your_key} --chain-id {chain_id}

Отвязка

Пользователи могут отвязать свои активы от делегированных валидатором активов.

Пример

seid tx staking unbond {validator_addr} {amount} --from {your_key} --chain-id {chain_id}

Запросы

Делегирование

Пользователи могут запрашивать делегации у любого лица, которое делегировало активы валидатору.

Пример

seid query staking delegation {delegator_addr} {validator_addr} 


Делегирования

Пользователи также имеют возможность запрашивать все делегирования, которые человек сделал всем валидаторам.

Пример

seid query staking delegations {delegator_addr}


Делегации в

Пользователи могут запрашивать делегирование полномочий определенному валидатору всеми делегаторами

Пример

seid query staking delegations-to {validator_addr}

Выше представлены некоторые команды, которые могут использоваться чаще всего, существуют дополнительные операции и запросы, которые хорошо документированы в cosmos sdk details, расположенных здесь:
Cosmos SDK Staking Docs


Голосование по предложениям

Участвовать в управлении Sei путем голосования по предложениям


Предварительные условия

  1. Приобретайте токены Sei
  2. Делегируйте свои Sei-токены валидатору Sei
    TODO: Инструкции по делегированию ссылок


Голосование

Функциональность голосования для управления Sei унаследована от стандартного модуля Cosmos gov. Ниже приведены некоторые полезные команды транзакций и запросов, а также ссылки на более подробную документацию.


Транзакции

Голосование по предложению

Это позволяет адресанту проголосовать по указанному предложению. Существует четыре варианта голосования при голосовании по предложению

yes
no
abstain
no_with_veto

Пример

seid tx gov vote {proposal_id} {vote_option} --from {voter_key} --chain-id {chain_id}


Взвешенное голосование

Операция взвешенного голосования позволяет голосующему частично распределить право голоса между различными вариантами голосования. Это особенно полезно в случаях, когда голосующий голосует от имени нескольких заинтересованных сторон с различными решениями по голосованию.

При выполнении взвешенного голосования транзакция выполняется не с одним вариантом, а с весами голосов. Весовые коэффициенты голосования выражаются в виде разделенной запятыми строки вариантов голосования, сопоставленных с весовыми коэффициентами голосования. Для того чтобы транзакция была действительной, весовые коэффициенты голосования должны равняться 1.


Пример взвешивания при голосовании

yes=0.3,no=0.2,no_with_veto=0.15,abstain=0.35

Пример

seid tx gov weighted-vote {proposal_id} {voting_weights} --from {voter_key} --chain-id {chain_id} 

Запрос

Детали предложения

Это вернет информацию об одном предложении, указанном proposal_id.

Пример

seid query gov proposal {proposal_id} --chain-id {chain_id}

Подсчет предложений

Это вернет текущий подсчет голосов для указанного proposal_id.

Пример

seid query gov tally {proposal_id} --chain-id {chain_id}


Индивидуальное голосование

Это позволит запросить информацию о голосовании для конкретного адреса избирателя и идентификатора предложения.

Пример

seid query gov vote {proposal_id} {voter_addr} --chain-id {chain_id}

Оракул

Участие Оракула

Обеспечение ценообразования активов через участие оракула


Сводка

Sei имеет модуль Oracle для поддержки ценообразования обменных курсов активов для использования другими модулями и контрактами. При проверке для сети участие в качестве оракула ожидается и требуется для обеспечения наиболее надежного и точного ценообразования для активов.

Для ценообразования оракулом раунды голосования состоят из нескольких этапов для обеспечения целостности и консенсуса ценовых данных до принятия обменных курсов в качестве источника истины. В каждом периоде голосования есть два этапа агрегирования, в которых должны участвовать оракулы.

На данный момент каждое окно для голосования имеет длину 2 блока

Шаг предварительного голосования - это шаг, на котором валидатор предоставляет свои цены оракула, представленные во время окна голосования X для следующего окна голосования X+1. На этом этапе предварительного голосования валидатор хэширует предложенные им курсы обмена, чтобы другие валидаторы не могли просто скопировать голоса этого валидатора.

На этапе голосования для окна X валидатор предоставляет свои предлагаемые курсы обмена для текущего окна. Они хэшируются и сравниваются с предварительными голосованиями из окна X-1, чтобы убедиться, что проголосовавшие значения не изменились в течение окна голосования. В конце периода голосования все голоса за обменный курс накапливаются и вычисляется взвешенная медиана (взвешенная по силе голоса валидатора) для определения истинного обменного курса для каждого актива.

Существуют штрафы за неучастие и участие с плохими данными. У валидаторов есть счетчик промахов, который отслеживает количество окон голосования, в которых валидатор либо не предоставил данные, либо предоставил данные, которые слишком сильно отклоняются от взвешенной медианы. За определенное количество периодов голосования, если количество промахов валидатора слишком велико, его снижают в качестве наказания за плохое поведение в течение длительного периода времени.

Штрафные санкции - сокращение на 0,01%, если <5% голосов действительны в течение одной недели. Допустимое отклонение от медианы - ±1%.


Шаги

Агрегат предварительного голосования

На этом этапе валидаторы должны предоставить предлагаемые курсы обмена для следующего окна голосования. Валидаторы должны предоставить курсы обмена для деноминаций в VoteTargets (более подробная информация о VoteTargets находится здесь). Курсы обмена предоставляются в виде списка номиналов и их курсов обмена к базовому номиналу, разделенных запятыми.

Пример представления обменных курсов

12.345uatom,420.69usei,3.1415ufoo

Пример CLI

seid tx oracle aggregate-prevote {salt} {exchange_rates} {validator_addr} --from {your_key}


Совокупное голосование

На этом этапе валидаторы должны предоставить курсы обмена валют для текущего окна голосования. Эти курсы обмена должны совпадать с курсами обмена, предоставленными в предварительном голосовании во время предыдущего окна голосования. Курсы обмена предоставляются в виде списка номиналов и их курсов к базовому номиналу, разделенных запятыми.

Пример представления обменных курсов

12.345uatom,420.69usei,3.1415ufoo

Пример CLI

seid tx oracle aggregate-vote {salt} {exchange_rates} {validator_addr} --from {your_key}

Выполнение сценариев оракула

Существуют некоторые ресурсы, помогающие валидаторам настроить скрипты oracle для предоставления данных о ценах. Они доступны в папке sei-chain/scripts/oracle в публичном репозитории. Ссылка: https://github.com/sei-protocol/sei-chain/tree/master/scripts/oracle


Объединенное голосование

Для простоты валидаторов, предоставляющих ценообразование оракула, и для освобождения места в блоке, мы также предоставляем комбинированный tx голосования для выполнения голосования для текущего окна с последующим предварительным голосованием для следующего окна. Это упрощает обеспечение того, что валидатору не нужно подписывать несколько транзакций, чтобы обеспечить ценообразование оракулом для данного окна голосования.

Пример CLI

seid tx oracle aggregate-combined-vote {vote_salt} {vote_exchange_rates} {prevote_salt} {prevote_exchange_rates} {validator_addr} --from {your_key}


Делегация фидеров

Если вы хотите участвовать в качестве оракула с другого аккаунта, вы можете сделать это, создав фидер для вашего валидатора. Это позволит учетной записи фидера также проводить голосования оракула от имени валидатора.

Пример

seid tx oracle set-feeder <new-address> --from <wallet-name> --fees 2000usei --chain-id <chain-id>


Воздержание от голосования

Мы также разрешаем валидаторам воздерживаться от участия в ценообразовании по оракулу. Для того чтобы валидатор воздержался и не пропустил цену в окне голосования, он должен не предоставлять никаких голосов, связанных с оракулом, в данном окне голосования. Если они это сделают, то они будут засчитаны как воздержавшиеся, а не как пропущенные для данного окна. Преимуществом этого является то, что валидатор может избежать участия в ценообразовании оракулом, если он не уверен в своей способности предоставить точные данные о цене. Следствием этого является то, что валидатор не будет иметь права на какие-либо награды, связанные с ценообразованием оракула в данном окне слэшинга.


Кошельки

Интеграция кошелька


Настройка кошелька Keplr

Ссылка для установки: https://www.keplr.app/

Примечание: На данный момент интеграция Sei с Keplr не добавлена.

Чтобы получить доступ к Sei через Keplr и взаимодействовать с протоколами, построенными поверх Sei:

1. Переключитесь на вкладку "Sei" в верхнем выпадающем списке.

2. Нажмите на три строки в левом верхнем углу, чтобы отобразить меню.

3. Выберите [Add Token] в меню и заполните адрес контракта, имя, символ, десятичную дробь и т.д. (имя, символ и десятичная дробь обычно заполняются автоматически после указания адреса контракта).

Keplr Кошелек IBC Переводы

Следуйте инструкциям здесь, чтобы завершить перевод IBC с помощью Keplr: https://help.keplr.app/ibc-guides-troubleshooting/cosmos-ibc-transfers.


Оригинал документации: https://docs.seinetwork.io/introduction/overview

Подготовлено blinkfeed#8312