Проект

Общее

Профиль

Exampls » История » Редакция 4

Редакция 3 (Mariyam Seidaliyeva, 05.02.2026 12:48) → Редакция 4/5 (Mariyam Seidaliyeva, 05.02.2026 12:50)

h1. Примеры 

 h3. Python 

 <pre><code class="python"> 
 from eth_keys import keys 
 import requests 
 msg = b'{}' 
 pk = keys.PrivateKey(b'\x01' * 32) 
 signature = pk.sign_msg(msg) 
 addr = pk.public_key.to_checksum_address() 
 verify = signature.verify_msg(msg, pk.public_key) 
 re_addr = signature.recover_public_key_from_msg(msg).to_checksum_address() 
 print(str(addr) + ' = ' + str(re_addr) + ' = ' + str(verify)) 

 URL = "https://my.h2k.me/ec/ex" 
 headers = { 
         'x-app-ec-from': addr, 
         'x-app-ec-sign-r': hex(signature.r), 
         'x-app-ec-sign-s': hex(signature.s), 
         'x-app-ec-sign-v': hex(signature.v), 
     } 
 print(headers) 
 r = requests.get(url=URL, headers=headers) 
 print(r.content) 
 data = r.json() 
 print(data) 
 </pre></code> 

 h3. NodeJS + Express 

 В задаче #3397 вложен zip-архив с готовыми скриптами для теста API-методов. 
 Ниже показаны примеры POST-запроса создания кошелька и GET-запроса получения списка кошельков. 

 *1. Создание кошелька* 

 В значения переменных создания аккаунта и первой компоненты подписи _'x-app-ec-from'_ можно использовать тестовые значения: 

 <pre><code class="javascript"> 
 const account = '0xb7d9b51eda54d664366d74c1b1a4ed2ca9e1abed646732bfb83b141f22df3b39'     
 const rFrom = '0xA285990a1Ce696d770d578Cf4473d80e0228DF95' 
 </code> 
 </pre> 

 <pre><code class="javascript"> 

 import Web3 from 'web3'; 
 import axios from 'axios'; 

 // 1. Инициализация 
 const web3 = new Web3(); 

 // 2. Создание аккаунта (можно заменить значением) 
 const account = web3.eth.accounts.create(); 

 // 3. Тело запроса (ВАЖНО: именно это будет подписано) 
 const body = { 
     slist: { 
         min_signs: "2", 
         "0": { type: "all", email: "e@mail.com" }, 
         "1": { type: "any", email: "e@mail.ru", sms: "+77777777777" }, 
         "2": { type: "all", ecaddress: "0xa75db3c448bb62e208e4babf500925427837e464" } 
     }, 
     network: "5010", 
     info: "Мой первый кошелёк" 
 }; 

 // 4. Строка для подписи 
 const message = JSON.stringify(body); 

 // 5. Подпись 
 const sign = web3.eth.accounts.sign(message, account.privateKey); 

 // 6. Заголовки 
 const headers = { 
     'Content-Type': 'application/json', 
     'Accept': 'application/json', 

     // компоненты подписи 
     'x-app-ec-from': account.address, 
     'x-app-ec-sign-r': sign.r, 
     'x-app-ec-sign-s': sign.s, 
     'x-app-ec-sign-v': sign.v 
 }; 

 // 7. POST-запрос 
 const url = 'https://my.safina.pro/ece/newWallet'; 

 (async () => { 
     try { 
         const response = await axios.post(url, message, { headers }); 

         console.log('API response:', response.data); 
     } catch (err) { 
         if (err.response) { 
             console.error('API error:', err.response.status, err.response.data); 
         } else { 
             console.error('Request error:', err.message); 
         } 
     } 
 })(); 
 </pre> </code> 

 *2. Получение списка кошельков* 

 * В значения переменных создания аккаунта и первой компоненты подписи _'x-app-ec-from'_ можно использовать тестовые значения: 
 <pre><code class="javascript"> 
 const account = '0xb7d9b51eda54d664366d74c1b1a4ed2ca9e1abed646732bfb83b141f22df3b39'     
 const rFrom = '0xA285990a1Ce696d770d578Cf4473d80e0228DF95' 
 </code> 
 </pre> 

 * GET-запрос подписывается _const message = '{}';_ 

 <pre><code class="javascript"> 
 import Web3 from 'web3'; 
 import axios from 'axios'; 

 // 1. Инициализация 
 const web3 = new Web3(); 

 // 2. Тестовый аккаунт 
 const account = web3.eth.accounts.create(); 

 // 3. Текст для подписи 
 const message = '{}'; 

 // 4. Подпись 
 const sign = web3.eth.accounts.sign(message, account.privateKey); 

 // 5. Заголовки 
 const headers = { 
     'Accept': 'application/json', 

     // компоненты подписи 
     'x-app-ec-from': account.address, 
     'x-app-ec-sign-r': sign.r, 
     'x-app-ec-sign-s': sign.s, 
     'x-app-ec-sign-v': sign.v 
 }; 

 // 6. GET-запрос 
 const url = 'https://my.safina.pro/ece/wallets'; 

 (async () => { 
     try { 
         const response = await axios.get(url, { headers }); 

         console.log('API response:', response.data); 
     } catch (err) { 
         if (err.response) { 
             console.error('API error:', err.response.status, err.response.data); 
         } else { 
             console.error('Request error:', err.message); 
         } 
     } 
 })(); 

 </code></pre>