πŸ“’ EOS - Π–ΡƒΡ€Π½Π°Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ЗвСздная Π΄Π°Ρ‚Π° 20176.30 (@dan)

На этой Π½Π΅Π΄Π΅Π»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° c++ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² block.one приняла Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ 4-Ρ… Π½ΠΎΠ²Ρ‹Ρ… Ρ‡Π»Π΅Π½ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽΠΈΡ€ΠΎΠ²Π°Π»Π° Π΅Ρ‰Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ…. Новобранцы ΡƒΠΆΠ΅ Π½Π°Ρ‡Π°Π»ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ свой Π²ΠΊΠ»Π°Π΄ Π² ΠΊΠΎΠ΄.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ зарСгистрированных схСм сообщСний

Π‘ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ Π½Π° WebAssembly (WASM) Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½Π°ΡˆΠΈΡ… Ρ€Π°Π½Π½ΠΈΡ… дизайнСрских Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, исходя ΠΈΠ· прСдполоТСния ΠΎΠ± использовании Wren. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ WASM Π½Π΅ зависит ΠΎΡ‚ языков, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ WASM для Π°Π½Π°Π»ΠΈΠ·Π° сообщСний, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ABI (Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ интСрфСйс прилоТСния) тСхничСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ синтаксичСским Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ WASM, Π° Π½Π΅ нашими ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ встроСнными зарСгистрированными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ сообщСний ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ².

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ Π½Π΅ способСн ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ исполнСниС схСм сообщСний, ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρƒ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ нСзависимо Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ΠΎΠΌ схСмы сообщСний. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ большС возмоТностСй Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ИзмСнСниС структуры ИмСни Аккаунта

Одним ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅ Π½Π° этой Π½Π΅Π΄Π΅Π»Π΅ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² с 256 Π±ΠΈΡ‚Π½Ρ‹Ρ… строк Π½Π° 60 Π±ΠΈΡ‚Π½Ρ‹Π΅ числа, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅ ΠΈΠΌΠ΅Π½Π° Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ base32. Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π° Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² 12 строчными Π±ΡƒΠΊΠ²Π°ΠΌΠΈ ΠΈ нСсколькими Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ. Π‘Ρ€Π΅Π΄Π½Π΅Π΅ имя Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° Π² Twitter ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ всСго Π² 12 символов.

Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ сдСлано Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΠ·-Π·Π° потрСбляСмой пропускной способности, памяти ΠΈ вопросов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ имя Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° - это просто ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π° ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ повсСмСстно. Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ ABI упорядочивал эти ΠΈΠΌΠ΅Π½Π° Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Π½ΠΎ-прСфиксныС строки ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» Π±Ρ‹ интСнсивных вычислСний Π² процСссС распаковки.

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° цСлочислСнноС прСдставлСниС фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² ΠΌΡ‹ добились ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² всё стало ΠΌΠ΅Π½Π΅Π΅ Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΌΡ‹ просто ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΊΠ°ΠΊ base32, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅ ΠΈΠΌΠ΅Π½Π°.

Π‘ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° всё Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ рСгистрации ΠΈΡ… с ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠΌ Π½Π° обслуТиваниС ΠΈΠΌΠ΅Π½ΠΈ.
Π’ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ сообщСниС-транзакция послС ввСдСния этого измСнСния Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° 75% мСньшС, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ дСсятки тысяч Ρ‚Π°ΠΊΠΎΠ²Ρ‹Ρ… Π² сСкунду.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² WASM

ΠœΡ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ WASM ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ для выявлСния ΠΈ ΠΎΡ‚Π±Ρ€Π°ΠΊΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Бэндбоксинг Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ срСды WASM

ΠœΡ‹ добились Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ прогрСсса Π²ΠΎ Π²Π²ΠΎΠ΄Π΅ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ² Π² WASM, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ врСмя выполнСния ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒ процСсс, Ссли ΠΏΡ€ΠΎΡˆΠ»ΠΎ слишком ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π­Ρ‚ΠΎ критичСская ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Новый C++ Simplecoin (80 000 TPS)

Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΌΠΎΠΈΡ… ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ я ΠΏΠΎΠΊΠ°Π·Π°Π» Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π²Π°Π»ΡŽΡ‚Π½ΠΎΠ³ΠΎ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°, написанного Π½Π° Π‘, ΠΈ достиТСниС 50К Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду. Π― упомянул, Ρ‡Ρ‚ΠΎ Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ синтаксис, ΠΈ сСгодня счастлив ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ simplecoin Π½Π° C++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ компилируСтся Π½Π° WASM ΠΈ Π·Π°Ρ‚Π΅ΠΌ выполняСтся. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сТатый Ρ†ΠΈΠΊΠ» Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ добавлСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ ΠΌΡ‹ добились 80 000 TPS, пСрСводя срСдства с ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΡˆΠ΅ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎ зависит ΠΎΡ‚ ΠΌΠ΅Π½ΡΡŽΡ‰Π΅ΠΉΡΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹; ΠΏΠΎΠΊΠ° слишком Ρ€Π°Π½ΠΎ ΠΎΠ± этом Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ. ВсС измСрСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π½Π° 4Ghz Intel Core i7 Π½Π° iMac 2014 Π³ΠΎΠ΄Π°.

struct Transfer {
  uint64_t    from;
  uint64_t    to;
  uint64_t    amount;
  char        memo[];
};
 
static_assert( sizeof(Transfer) == 3*sizeof(uint64_t), "unexpected padding" );
 
struct Balance {  uint64_t    balance; };
 
void on_init() {
  static Balance initial = { 1000*1000 };
  static AccountName simplecoin;
  simplecoin = name_to_int64( "simplecoin" );
 
  store( simplecoin, initial ); 
}
 
void apply_simplecoin_transfer() {
   static Transfer message;
   static Balance from_balance;
   static Balance to_balance;
   to_balance.balance = 0;
 
   readMessage( message  );
   load( message.from, from_balance );
   load( message.to, to_balance );
 
   assert( from_balance.balance >= message.amount, "insufficient funds" );
   
   from_balance.balance -= message.amount;
   to_balance.balance   += message.amount;
   
   if( from_balance.balance )
      store( message.from, from_balance );
   else
      remove( message.from );
 
   store( message.to, to_balance );
}

Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ чистый ΠΈ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄, созданный WASM ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ мСньшС. По большСй части экономия Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ пространства стала Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π·Π° счСт измСнСния ΠΈΠΌΠ΅Π½ΠΈ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° ΠΈ ABI для этого ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°. Π’ этом случаС ABI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ копию Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΡƒΡŽ парсинга ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘++ структурС, ΠΈ всС ΠΈΠΌΠ΅Π½Π° Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с этим ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° WasmFiddle, пСрСйдя ΠΏΠΎ ссылкС.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Команда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² EOS растСт, ΠΈ тСхнология развиваСтся ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ всС ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ вСсьма Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅. Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° обновлСниями!


Π‘Π²Π΅ΠΆΠΈΠ΅ новости Π² Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌ: t.me/EOS_RU


ΠŸΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½ΠΎ @rusteemitblog

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» поста: Π—Π”Π•Π‘Π¬


ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ witness blockchained Π½Π° Steem


H2
H3
H4
3 columns
2 columns
1 column
5 Comments