-
Notifications
You must be signed in to change notification settings - Fork 0
/
wallet.py
66 lines (51 loc) · 1.39 KB
/
wallet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import hashlib as hasher
import sys
from random import randint
from time import time
import requests
from rsa import newkeys, PrivateKey, sign
MINERS = open('miners.txt').read().strip().split('\n')
def create_new_wallet():
pub, pri = newkeys(1024)
with open('rsa.pub', 'w') as f:
f.write(pub.save_pkcs1())
with open('rsa.pri', 'w') as f:
f.write(pri.save_pkcs1())
def main():
command = sys.argv[1]
if command == 'create_new_wallet':
create_new_wallet()
return
PUB = ''.join(open('rsa.pub').read().split('\n')[1:4])
receiver = command
amount = sys.argv[2]
timestamp = time()
sha = hasher.sha256()
sha.update(
str(PUB) +
str(receiver) +
str(amount) +
str(timestamp)
)
hash = sha.hexdigest()
with open('rsa.pri', 'r') as f:
PRI = PrivateKey.load_pkcs1(f.read())
sig = sign(hash, PRI, 'SHA-256').encode('hex')
try:
requests.post(
'http://{ip}:8000/new_transaction/'.format(
ip=MINERS[randint(0, len(MINERS) - 1)]
),
data={
'timestamp': timestamp,
'sender': PUB,
'receiver': receiver,
'amount': amount,
'hash': hash,
'sign': sig,
}
)
except:
pass
if __name__ == '__main__':
main()