Проект

Общее

Профиль

Действия

Примеры

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)

NodeJS + Express

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

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

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

const account = '0xb7d9b51eda54d664366d74c1b1a4ed2ca9e1abed646732bfb83b141f22df3b39'    
const rFrom = '0xA285990a1Ce696d770d578Cf4473d80e0228DF95'


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);
        }
    }
})();

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

  • В значения переменных создания аккаунта и первой компоненты подписи 'x-app-ec-from' можно использовать тестовые значения:
    const account = '0xb7d9b51eda54d664366d74c1b1a4ed2ca9e1abed646732bfb83b141f22df3b39'    
    const rFrom = '0xA285990a1Ce696d770d578Cf4473d80e0228DF95'
    
  • GET-запрос подписывается const message = '{}';
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);
        }
    }
})();

Обновлено Mariyam Seidaliyeva 29 дня назад · 5 изменени(я, ий)