SEI. Documentation [RUS Version]
Введение
Обзор
Цепочка первого уровня, специально разработанная для книги ордеров
Самая быстрая инфраструктура книги ордеров в криптовалюте.
Sei - это самая быстрая ордерная книга L1 блокчейна. Он построен с использованием Cosmos SDK и ядра Tendermint и имеет встроенный модуль центрального лимита ордеров (ЦЛО). Децентрализованные приложения, созданные на базе Sei, могут опираться на инфраструктуру Sei ЦЛО, а другие блокчейны на базе Cosmos могут использовать ЦЛО Sei в качестве общего центра ликвидности и создавать рынки для любых активов.
Созданная с учетом пожеланий разработчиков и пользователей, Sei служит инфраструктурой и центром общей ликвидности для следующего поколения DeFi. Приложения могут легко подключаться к инфраструктуре ордеров Sei и получать доступ к общей ликвидности от других приложений. В целях повышения удобства разработчиков Sei интегрировала модуль wasmd для поддержки смарт-контрактов CosmWasm.
Команда Sei состоит из людей с тремя типами опыта: первый - это старшие инженеры из Robinhood, Databricks, Airbnb, которые знают все тонкости построения цепочки. Вторая группа - это группа Cosmos OGs, которые годами ориентируются в экосистеме. Третья группа имеет большой опыт работы в TradFi в Goldman и других компаниях и будет работать над устранением разрывов между DeFi, институтами и основным потоком.
Почему Sei
Sei поддерживает смарт-контракты CosmWasm и интеграцию с другими цепочками IBC
В Sei мы создаем лучшую инфраструктуру внутрицепочечных ордеров. Sei была оптимизирована для обеспечения скорости, стабильности и экономической эффективности. Это открывает путь к созданию совершенно нового набора внутрицепочечных продуктов DeFi. Существующие L1 общего назначения не могут предложить эти три компонента, жизненно важных для масштабируемых, долгосрочных центральных лимитных ордерных книг (ЦЛОК), и поэтому ограничивают текущие возможности DeFi. Для масштабирования ордерных книг на цепочке, сама базовая цепочка должна быть, в первую очередь, оптимизирована для их обслуживания.
Sei использует модуль wasm, чтобы облегчить разработчикам создание приложений на основе Sei. Разработчики могут использовать библиотеку CosmWasm на основе Rust для создания децентрализованных приложений. Это дает разработчикам множество преимуществ:
- CosmWasm является зрелой и используется многими блокчейнами. Как следствие, это очень стабильная, не имеющая ошибок библиотека с обширной экосистемой разработчиков.
- CosmWasm был создан для решения многих проблем разработки, с которыми сталкиваются другие экосистемы. Она проще, чем разработка на Solana, и более безопасна, чем Solidity.
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 и многих других.
- модульность для настройки блокчейна под конкретные требования пользователя;
- масштабируемость для запуска параллельных цепочек;
- совместимость для связи с другими блокчейнами через модуль IBC;
- безопасность с помощью брандмауэров контроля доступа;
- модуль PoS в качестве надежной основы;
- суверенитет для внесения предложений и голосования по модернизации блокчейна с помощью модуля управления;
- сообщество разработчиков с открытым исходным кодом;
- использование преимуществ экосистемы Golang для написания dApps на Go.
Узнайте больше: 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, за которые проголосовало руководство.
Соберите образ. Обратите внимание, что следующие шаги выполняются из вашего контрактного каталога, поэтому они предполагают, что 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
Добавление полной ноды (без валидатора)
Рекомендуемое минимальное оборудование
Эти характеристики являются минимально рекомендуемыми. Поскольку 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.
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
После настройки полного узла, как описано выше, необходимо выполнить еще несколько дополнительных шагов для настройки узла в качестве валидатора. Откройте отдельное окно командной строки и выполните следующие шаги:
Для создания валидатора требуется консенсусный PubKey вашего узла. Выполните следующее:
PUBKEY=$(seid tendermint show-validator)
2. Отправить средства на ваш счет
Вам необходимо создать и добавить учетную запись, если вы этого еще не сделали.
Пожалуйста, свяжитесь с командой Sei в канале discord, чтобы добавить средства на ваш счет.
Вы можете проверить, были ли отправлены средства, выполнив следующую команду:
seid query bank balances $ACCOUNT_ADDRESS
Чтобы создать валидатор, выполните следующую команду:
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)"
Обновления
Все обновления цепи можно найти здесь:
Вы можете найти различные инструкции по обновлению. Приведенные ниже документы относятся к обновлению до версии 1.0.3beta
Когда цепь достигнет высоты обновления, вы столкнетесь со следующим сообщением о панической ошибке:
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
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. По окончании тестового периода мы подсчитаем баллы всех валидаторов и участников и распределим вознаграждения в виде токенов.
Никаких закрытых бета-версий. Никаких белых списков. Присоединение к Seinami Testnet - единственный и лучший способ ознакомиться с Sei до запуска. Мы хотим дать возможность валидаторам, разработчикам и участникам взаимодействовать с Sei, устанавливая узлы, кошельки, совершая транзакции и голосуя за предложения по управлению.
Sei глубоко ценит комментарии, критику и опасения наших первых последователей и участников. Присоединившись к Seinami Testnet, вы сможете предоставлять прямую обратную связь нашей команде и формировать Sei по мере его роста и развития.
Seinami Testnet открыт для участия всех членов сообщества, однако не все участники имеют право на вознаграждение.
Мы приглашаем к участию валидаторов, разработчиков и членов сообщества всех стран, однако следующие группы не будут иметь права на получение вознаграждений:
Кроме того, несмотря на то, что это действительно соревнование, все должны играть хорошо и быть порядочными по отношению друг к другу. Нарушение Правил участия или Кодекса поведения, использование уязвимостей в программном обеспечении, атаки с помощью социальной инженерии для эксплуатации конкурентов или использование вредоносных программ для атак на других участников является основанием для дисквалификации. Будьте круты, друзья!
Обратите внимание, что для получения вознаграждения необходимо пройти проверку личности.
Просто отправьте эту форму, чтобы зарегистрироваться для участия в Seinami Incentivized Testnet.
Пока вы ждете начала тестового периода, присоединяйтесь к Discord и Telegram, чтобы быть в курсе наших анонсов, или читайте наши документы по настройке валидатора, чтобы запустить свою ноду.
Sei Discord будет основным форумом для технических обсуждений, обновлений и поддержки. Однако основные объявления о тестнете будут распространяться по всем социальным каналам, поэтому обязательно следите за ними, чтобы ничего не пропустить!
Программа Seinami Testnet была разработана для привлечения сообщества к тестированию устойчивости и эффективности Сей. Мы оставляем за собой право завершить или продлить программу в любое время по нашему усмотрению и в соответствии с целями программы. В конечном итоге, команда Sei оставляет за собой право по своему усмотрению вознаграждать отдельных лиц в рамках юридических и нормативных требований.
Присоединение к стимулируемому Testnet
Добавление полного узла (без валидатора)
Рекомендуемое минимальное оборудование
Эти характеристики являются минимально рекомендуемыми. Поскольку 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.
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
Теперь ваш узел синхронизируется. Этот процесс может занять много времени. Убедитесь, что вы установили стабильное соединение, чтобы вы могли отлучиться на время синхронизации.
После настройки полного узла, как описано выше, необходимо выполнить еще несколько дополнительных шагов для настройки узла в качестве валидатора. Откройте отдельное окно командной строки и выполните следующие шаги:
Для создания валидатора требуется консенсусный PubKey вашего узла. Выполните следующее:
PUBKEY=$(seid tendermint show-validator)
2. Отправить средства на ваш счет
Вам необходимо создать и добавить учетную запись, если вы этого еще не сделали.
Пожалуйста, свяжитесь с командой Sei в канале discord, чтобы добавить средства на ваш счет.
Вы можете проверить, были ли отправлены средства, выполнив следующую команду:
seid query bank balances $ACCOUNT_ADDRESS
Чтобы создать валидатор, выполните следующую команду:
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-адрес удаленного узла
> 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" }
> 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" }
> seid tendermint show-node-id 89e8fdd427a056fb7b4f5da2d58a4b688feb4b74
> curl localhost:1317/cosmos/base/tendermint/v1beta1/node_info | jq -r ".default_node_info.default_node_id 89e8fdd427a056fb7b4f5da2d58a4b688feb4b74
> seid status | jq -r ".SyncInfo.catching_up" false
> curl localhost:1317/cosmos/base/tendermint/v1beta1/syncing { "syncing": false }
> seid query block | jq { "block_id": { "hash": "92B93642DCCECFBDFEAE972C67294CF1B3574FAF55F3B24E218990CC4EE28B0A", "parts": { "total": 1, "hash": "5FBD2E43F3A3F6DBD9C9E2021B1505DF3AC74841F7207F479E701FF0726E0EF3" } }, "block": { "header": { "version": { "block": "11" }, ...
> 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", ...
> seid query bank balances $ACCOUNT_ADDRESS balances: - amount: "29999999999995999900" denom: ust pagination: next_key: null total: "0"
> curl localhost:1317/bank/balances/$ACCOUNT_ADDRESS {"height":"4028","result":[ { "denom": "ust", "amount": "29999999999995999900" } ]}
Получить информацию валидатора
> 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"
> 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 требуется подписанная транзакция (Tx). Вот пример с использованием клиента cosmjs: https://github.com/sei-protocol/sei-chain/blob/master/oracle/oracle.js.
Эта конечная точка принимает запрос на размещение массового ордера.
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; }
Эта конечная точка принимает запрос на отмену массового ордера
rpc CancelOrders(MsgCancelOrders) returns (MsgCancelOrdersResponse); message MsgCancelOrders { string creator = 1; repeated OrderCancellation orderCancellations = 2; string contractAddr = 3; } message MsgCancelOrdersResponse {}
Эта конечная точка ликвидирует счет
message MsgLiquidation { string creator = 1; string accountToLiquidate = 2; string contractAddr = 3; } message MsgLiquidationResponse {}
Совокупный обменный курс предварительного голосования
Эта конечная точка должна отправить оракулу хэш предварительного голосования для следующего окна голосования.
message MsgAggregateExchangeRatePrevote { string hash = 1; string feeder = 2; string validator = 3; } message MsgAggregateExchangeRatePrevoteResponse {}
Совокупное голосование по обменному курсу
Эта конечная точка используется для отправки ценового голосования оракула для текущего окна голосования. Предоставленные курсы валют должны совпадать с хэшированным предварительным голосованием, предоставленным в предыдущем окне голосования (для текущего окна голосования).
message MsgAggregateExchangeRateVote { string salt = 1; string exchange_rates = 2; string feeder = 3; string validator = 4; } message MsgAggregateExchangeRateVoteResponse {}
Получение расчетной сделки (не существует?)
Эта конечная точка принимает идентификатор рынка и возвращает сделки, заключенные в последнем блоке.
GetSettledTradesRequest { int market_id; } GetSettledTradesResponse { vector<Order> settled_trades; }
Эта конечная точка принимает идентификатор рынка и возвращает последнюю книгу (блок) длинных ордеров.
Сервис: 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}
Эта конечная точка принимает идентификатор рынка и возвращает последнюю книгу (блок) коротких ордеров.
Сервис: 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}
Эта конечная точка возвращает обменный курс для определенного номинала
Сервис: 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"}
Эта конечная точка возвращает все активные курсы обмена
Сервис: 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): {}
Эта конечная точка возвращает все деномы, которые являются объектами голосования для ценовых голосов оракула.
Сервис: 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): {}
Эта конечная точка возвращает счетчик пропусков определенного валидатора.
Сервис: 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
Настройки моментального снимка:
snapshot-interval = 1000 snapshot-keep-recent = 5
Если вы запускаете новый узел, вы можете быстро освоиться в sei цепочках, настроив параметры statesync до начала процесса seid
. Ниже приведены инструкции по включению statesync для вашего узла, а также конкретные конфигурации для каждой среды sei chain.
Установите адрес RPC, который вы хотите использовать для statesync:
Адрес RPC, который необходимо установить, зависит от окружения цепочки
export RPC_ADDRESS="ec2-54-241-77-154.us-west-1.compute.amazonaws.com:26657"
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
Вам также может понадобиться установить узел как постоянный одноранговый:
Устойчивый сверстник для установки различается в зависимости от окружения цепи
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
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 путем голосования по предложениям
- Приобретайте токены Sei
- Делегируйте свои 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
seid tx oracle aggregate-prevote {salt} {exchange_rates} {validator_addr} --from {your_key}
На этом этапе валидаторы должны предоставить курсы обмена валют для текущего окна голосования. Эти курсы обмена должны совпадать с курсами обмена, предоставленными в предварительном голосовании во время предыдущего окна голосования. Курсы обмена предоставляются в виде списка номиналов и их курсов к базовому номиналу, разделенных запятыми.
Пример представления обменных курсов
12.345uatom,420.69usei,3.1415ufoo
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 голосования для выполнения голосования для текущего окна с последующим предварительным голосованием для следующего окна. Это упрощает обеспечение того, что валидатору не нужно подписывать несколько транзакций, чтобы обеспечить ценообразование оракулом для данного окна голосования.
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>
Мы также разрешаем валидаторам воздерживаться от участия в ценообразовании по оракулу. Для того чтобы валидатор воздержался и не пропустил цену в окне голосования, он должен не предоставлять никаких голосов, связанных с оракулом, в данном окне голосования. Если они это сделают, то они будут засчитаны как воздержавшиеся, а не как пропущенные для данного окна. Преимуществом этого является то, что валидатор может избежать участия в ценообразовании оракулом, если он не уверен в своей способности предоставить точные данные о цене. Следствием этого является то, что валидатор не будет иметь права на какие-либо награды, связанные с ценообразованием оракула в данном окне слэшинга.
Кошельки
Интеграция кошелька
Ссылка для установки: https://www.keplr.app/
Примечание: На данный момент интеграция Sei с Keplr не добавлена.
Чтобы получить доступ к Sei через Keplr и взаимодействовать с протоколами, построенными поверх Sei:
1. Переключитесь на вкладку "Sei" в верхнем выпадающем списке.
2. Нажмите на три строки в левом верхнем углу, чтобы отобразить меню.
3. Выберите [Add Token] в меню и заполните адрес контракта, имя, символ, десятичную дробь и т.д. (имя, символ и десятичная дробь обычно заполняются автоматически после указания адреса контракта).
Следуйте инструкциям здесь, чтобы завершить перевод IBC с помощью Keplr: https://help.keplr.app/ibc-guides-troubleshooting/cosmos-ibc-transfers.
Оригинал документации: https://docs.seinetwork.io/introduction/overview