Проект

Общее

Профиль

Exampls » История » Версия 3

Mariyam Seidaliyeva, 05.02.2026 12:48

1 1 Mariyam Seidaliyeva
h1. Примеры
2
3 2 Mariyam Seidaliyeva
h3. Python
4 1 Mariyam Seidaliyeva
5 3 Mariyam Seidaliyeva
<pre><code class="python">
6 1 Mariyam Seidaliyeva
from eth_keys import keys
7
import requests
8
msg = b'{}'
9
pk = keys.PrivateKey(b'\x01' * 32)
10
signature = pk.sign_msg(msg)
11
addr = pk.public_key.to_checksum_address()
12
verify = signature.verify_msg(msg, pk.public_key)
13
re_addr = signature.recover_public_key_from_msg(msg).to_checksum_address()
14
print(str(addr) + ' = ' + str(re_addr) + ' = ' + str(verify))
15
16
URL = "https://my.h2k.me/ec/ex"
17
headers = {
18
        'x-app-ec-from': addr,
19
        'x-app-ec-sign-r': hex(signature.r),
20
        'x-app-ec-sign-s': hex(signature.s),
21
        'x-app-ec-sign-v': hex(signature.v),
22
    }
23
print(headers)
24
r = requests.get(url=URL, headers=headers)
25
print(r.content)
26
data = r.json()
27
print(data)
28 3 Mariyam Seidaliyeva
</pre></code>
29 1 Mariyam Seidaliyeva
30 3 Mariyam Seidaliyeva
h3. NodeJS + Express
31 1 Mariyam Seidaliyeva
32 3 Mariyam Seidaliyeva
*1. Создание кошелька*
33 1 Mariyam Seidaliyeva
34 3 Mariyam Seidaliyeva
В значения переменных создания аккаунта и первой компоненты подписи _'x-app-ec-from'_ можно использовать тестовые значения:
35 1 Mariyam Seidaliyeva
36 3 Mariyam Seidaliyeva
<pre><code class="javascript">
37
const account = '0xb7d9b51eda54d664366d74c1b1a4ed2ca9e1abed646732bfb83b141f22df3b39'    
38
const rFrom = '0xA285990a1Ce696d770d578Cf4473d80e0228DF95'
39
</code>
40
</pre>
41 1 Mariyam Seidaliyeva
42 3 Mariyam Seidaliyeva
<pre><code class="javascript">
43 1 Mariyam Seidaliyeva
44 3 Mariyam Seidaliyeva
import Web3 from 'web3';
45
import axios from 'axios';
46
47
// 1. Инициализация
48
const web3 = new Web3();
49
50
// 2. Создание аккаунта (можно заменить значением)
51
const account = web3.eth.accounts.create();
52
53
// 3. Тело запроса (ВАЖНО: именно это будет подписано)
54
const body = {
55
    slist: {
56
        min_signs: "2",
57
        "0": { type: "all", email: "e@mail.com" },
58
        "1": { type: "any", email: "e@mail.ru", sms: "+77777777777" },
59
        "2": { type: "all", ecaddress: "0xa75db3c448bb62e208e4babf500925427837e464" }
60 1 Mariyam Seidaliyeva
    },
61 3 Mariyam Seidaliyeva
    network: "5010",
62
    info: "Мой первый кошелёк"
63
};
64
65
// 4. Строка для подписи
66
const message = JSON.stringify(body);
67
68
// 5. Подпись
69
const sign = web3.eth.accounts.sign(message, account.privateKey);
70
71
// 6. Заголовки
72
const headers = {
73
    'Content-Type': 'application/json',
74
    'Accept': 'application/json',
75
76
    // компоненты подписи
77
    'x-app-ec-from': account.address,
78
    'x-app-ec-sign-r': sign.r,
79
    'x-app-ec-sign-s': sign.s,
80
    'x-app-ec-sign-v': sign.v
81
};
82
83
// 7. POST-запрос
84
const url = 'https://my.safina.pro/ece/newWallet';
85
86
(async () => {
87
    try {
88
        const response = await axios.post(url, message, { headers });
89
90
        console.log('API response:', response.data);
91
    } catch (err) {
92
        if (err.response) {
93
            console.error('API error:', err.response.status, err.response.data);
94
        } else {
95
            console.error('Request error:', err.message);
96
        }
97 1 Mariyam Seidaliyeva
    }
98 3 Mariyam Seidaliyeva
})();
99
</pre> </code>
100
101
*2. Получение списка кошельков*
102
103
* В значения переменных создания аккаунта и первой компоненты подписи _'x-app-ec-from'_ можно использовать тестовые значения:
104
<pre><code class="javascript">
105
const account = '0xb7d9b51eda54d664366d74c1b1a4ed2ca9e1abed646732bfb83b141f22df3b39'    
106
const rFrom = '0xA285990a1Ce696d770d578Cf4473d80e0228DF95'
107
</code>
108 1 Mariyam Seidaliyeva
</pre>
109 3 Mariyam Seidaliyeva
110
* GET-запрос подписывается _const message = '{}';_
111
112
<pre><code class="javascript">
113
import Web3 from 'web3';
114
import axios from 'axios';
115
116
// 1. Инициализация
117
const web3 = new Web3();
118
119
// 2. Тестовый аккаунт
120
const account = web3.eth.accounts.create();
121
122
// 3. Текст для подписи
123
const message = '{}';
124
125
// 4. Подпись
126
const sign = web3.eth.accounts.sign(message, account.privateKey);
127
128
// 5. Заголовки
129
const headers = {
130
    'Accept': 'application/json',
131
132
    // компоненты подписи
133
    'x-app-ec-from': account.address,
134
    'x-app-ec-sign-r': sign.r,
135
    'x-app-ec-sign-s': sign.s,
136
    'x-app-ec-sign-v': sign.v
137
};
138
139
// 6. GET-запрос
140
const url = 'https://my.safina.pro/ece/wallets';
141
142
(async () => {
143
    try {
144
        const response = await axios.get(url, { headers });
145
146
        console.log('API response:', response.data);
147
    } catch (err) {
148
        if (err.response) {
149
            console.error('API error:', err.response.status, err.response.data);
150
        } else {
151
            console.error('Request error:', err.message);
152
        }
153
    }
154
})();
155
156
</code></pre>