This repository has been archived by the owner on Nov 4, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patharweave_handler.py
71 lines (59 loc) · 2.28 KB
/
arweave_handler.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
67
68
69
70
71
import arweave
from simple_graphql_client import GraphQLClient, load
from config import ARWEAVE_KEYFILE, FEE, DOMAIN
from typing import Union
wallet = arweave.Wallet(ARWEAVE_KEYFILE)
gql_client = GraphQLClient(base_url="https://arweave.dev/graphql")
def post_genesis_transaction():
transaction = arweave.Transaction(wallet)
transaction.add_tag(name="App-Name", value="ArVerifyDev")
transaction.add_tag(name="Type", value="Genesis")
transaction.add_tag(name="Fee", value=f"{FEE:.12f}")
transaction.add_tag(name="Domain", value=str(DOMAIN))
transaction.sign()
transaction.send()
return transaction.id
def tip_received(owner: str, fee: float) -> bool:
recipient = wallet.address
query = load("queries/tipped.gql")
variables = {
"owner": owner,
"recipient": recipient
}
response = gql_client.query(query, variables)
edges = response['data']['transactions']['edges']
if not edges:
return False
node = edges[0]['node']
quantity = float(node['quantity']['ar'])
return quantity == fee
def get_verification_id(verified_address: str, auth_nodes: [str]) -> Union[str, None]:
query = load("queries/verified.gql")
variables = {
"address": verified_address,
"authNodes": auth_nodes
}
response = gql_client.query(query, variables)
edges = response['data']['transactions']['edges']
if not edges:
return None
else:
return edges[0]['node']['id']
def store_on_arweave(verified_address: str) -> str:
# check if address has been verified before
auth_nodes = ["s-hGrOFm1YysWGC3wXkNaFVpyrjdinVpRKiVnhbo2so"]
transaction_id = get_verification_id(verified_address, auth_nodes)
# if the address hasn't been verified yet, create a transaction
if not transaction_id:
# store verification on Arweave
transaction = arweave.Transaction(wallet)
transaction.add_tag(name="App-Name", value="ArVerifyDev")
transaction.add_tag(name="Type", value="Verification")
transaction.add_tag(name="Method", value="Google")
transaction.add_tag(name="Address", value=verified_address)
transaction.sign()
_fee = transaction.get_price()
transaction.send()
return transaction.id
else:
return transaction_id