Skip to content

Commit fba0662

Browse files
committed
stuff working
1 parent 5ca7cc5 commit fba0662

12 files changed

+367
-141
lines changed

addresses.py

+106-7
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
b58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
1212

13+
secure_key_length=60
1314

1415
def base58encode(n):
1516
result = ''
@@ -82,13 +83,111 @@ def getunspent(publicaddress): #REPLACE SOMEDAY WITH LOCAL
8283
a=requests.get(url)
8384
return json.loads(a.content)['unspent_outputs']
8485

85-
86-
87-
88-
89-
90-
91-
86+
def txs_received_by_address(publicaddress):
87+
global transactions
88+
url='http://blockchain.info/address/'+str(publicaddress)+'?format=json'
89+
response=requests.get(url)
90+
transactions=json.loads(response.content)
91+
transactions=transactions['txs']
92+
93+
receivedtxs=[]
94+
95+
for tx in transactions:
96+
tome=False
97+
for outp in tx['out']:
98+
if 'addr' in outp:
99+
if outp['addr']==publicaddress:
100+
tome=True
101+
if tome:
102+
receivedtxs.append(tx)
103+
104+
return receivedtxs
105+
106+
def txs_sent_by_address(publicaddress):
107+
url='http://blockchain.info/address/'+str(publicaddress)+'?format=json'
108+
response=requests.get(url)
109+
transactions=json.loads(response.content)
110+
transactions=transactions['txs']
111+
112+
senttxs=[]
113+
114+
for tx in transactions:
115+
fromme=False
116+
for inp in tx['inputs']:
117+
if inp['prev_out']['addr']==publicaddress:
118+
fromme=True
119+
if fromme:
120+
senttxs.append(tx)
121+
return senttxs
122+
123+
124+
def find_opreturns_sent_by_address(publicaddress):
125+
txlist=txs_sent_by_address(publicaddress)
126+
scriptlist=[]
127+
for tx in txlist:
128+
129+
n=0
130+
for out in tx['out']:
131+
n=n+1
132+
script=out['script']
133+
if script[0:2]=='6a': #IS OP RETURN
134+
#print script
135+
txidentifier=str(tx['hash'])+":"+str(n)
136+
r=[]
137+
r.append(script[4:len(script)].decode('hex'))
138+
r.append(txidentifier)
139+
scriptlist.append(r)
140+
return scriptlist
141+
142+
def read_opreturns_sent_by_address(publicaddress):
143+
readdata=find_opreturns_sent_by_address(publicaddress)
144+
text=[]
145+
results=[]
146+
for x in readdata:
147+
text.append(x[0])
148+
n=0
149+
for x in text:
150+
strin=x[2:len(x)]
151+
x=x[0:2]
152+
print x
153+
try:
154+
intversion=int(x)
155+
#print intversion
156+
results.append([intversion,strin])
157+
except:
158+
a=0
159+
answer=''
160+
161+
sortedresults=['']*100
162+
for x in results:
163+
sortedresults[x[0]]=x[1]
164+
165+
for x in sortedresults:
166+
answer=answer+x
167+
168+
return answer
169+
170+
171+
def generate_secure_pair():
172+
randomkey=os.urandom(secure_key_length)
173+
public=generate_publicaddress(randomkey)
174+
private=generate_privatekey(randomkey)
175+
176+
results = {}
177+
178+
results['public_address']=public
179+
results['private_key']=private
180+
return results
181+
182+
def unspent_value(public_address):
183+
unspents=unspent(public_address)
184+
value=0.0
185+
for unsp in unspents:
186+
value=value+float(unsp['value'])
187+
value=value/100000000
188+
return value
189+
190+
#a=read_opreturns_sent_by_address('173CJ9wxuZFbJyDbkJ89AfpAkqx5PatxMk')
92191

93192
b58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
94193

addresses.pyc

3.75 KB
Binary file not shown.

asd

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
name: 'DeathKoin',
3+
ticker: 'ZYZZZ',
4+
total: 10000000,
5+
description: "dkdkdkdkdkdkdkdkkdfsajl"
6+
7+
# vested: 1000000,
8+
# unvested: 9000000,
9+
formation_date: 101010101010,
10+
cost_of_formation:
11+
}

bitsource.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
import time
44
import leb128
55

6-
node_url='199.188.192.144'# '127.0.0.1'#'71.198.63.116'##
6+
#node_url='199.188.192.144'# '127.0.0.1'#'71.198.63.116'##
7+
node_url='127.0.0.01'
78
node_port='8332'
89
username='barisser'
910
password='2bf763d2132a2ccf3ea38077f79196ebd600f4a29aa3b1afd96feec2e7d80beb3d9e13d02d56de0f'
1011

1112
def connect(command,params):
13+
global url, headers, payload
1214
url='http://'+username+':'+password+'@'+node_url+':'+node_port
1315
headers={'content-type':'application/json'}
1416
payload=json.dumps({'method':command,'params':params})

bitsource.pyc

1 Byte
Binary file not shown.

hello.py

+106-79
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,18 @@
66
import ast
77

88
import bitsource
9-
#import transactions
10-
9+
import transactions
10+
import addresses
1111

1212
app = Flask(__name__)
13+
app.config['PROPAGATE_EXCEPTIONS']=True
1314

1415

1516
@app.route('/')
1617
def something():
17-
return "Hello there!"
18+
response="hey there!"
19+
response.headers['Access-Control-Allow-Origin']= '*'
20+
return response
1821

1922
#GET HEX DECODED OP_RETURNS FROM A BLOCK
2023
@app.route('/opreturns/<blockn>') #WORKS
@@ -24,82 +27,106 @@ def opreturns_in_block(blockn=None):
2427
message=bitsource.op_return_in_block(blockn)
2528
return str(message)
2629

27-
# #GET PARSED METADATA FOR OPEN ASSETS TRANSACTIONS IN BLOCK
28-
# @app.route('/oa/blocks/<blockn>') #WORKS, needs color address
29-
# def oas_in_block(blockn=None):
30-
# oas=bitsource.oa_in_block(int(blockn))
31-
# return str(oas)
32-
#
33-
#
34-
# @app.route('/colors/signed', methods=['POST'])
35-
# def makenewcoin():
36-
# public_address=str(request.form['public_address'])
37-
# initial_coins=float(request.form['initial_coins'])
38-
# name=str(request.form['name'])
39-
# recipient=str(request.form['recipient'])
40-
# fee_each=0.0001
41-
# private_key=str(request.form['private_keys'])
42-
#
43-
# response=transactions.make_new_coin(public_address, initial_coins, name, recipient, fee_each, private_key)
44-
# #print response
45-
# return response
46-
# #return "hi"
47-
#
48-
# @app.route('/transactions/colored', methods=['POST']) #DOESNT EXACTLY MATCH DOCS
49-
# def transfer_transaction_serverside():
50-
# fromaddr=str(request.form['public_address'])
51-
# dest=str(request.form['recipient'])
52-
# fee=float(request.form['fee']) #DOESNT MATCH DOCS
53-
# private_key=str(request.form['private_key'])
54-
# coloramt=int(request.form['coloramt'])
55-
#
56-
# inputs=json.dumps(request.form['inputs']) #INELEGANT BUT IT WORKS
57-
# inputs=ast.literal_eval(json.loads(inputs))
58-
#
59-
# inputcoloramt=int(request.form['inputcoloramt'])
60-
# response= transactions.create_transfer_tx(fromaddr, dest, fee, private_key, coloramt, inputs, inputcoloramt)
61-
# return str(response)
62-
#
63-
#
64-
# @app.route('/colors/issue/signed', methods=['POST']) #WORKS
65-
# def issuenewcoinsserverside(): #TO ONE RECIPIENT ADDRESS
66-
# private_key=str(request.form['private_keys'])
67-
# public_address=str(request.form['public_address'])
68-
# more_coins=int(request.form['initial_coins'])
69-
# recipient=str(request.form['recipients'])
70-
# fee_each=0.0001
71-
# name=str(request.form['name'])
72-
# othermeta=str(name)
73-
#
74-
# print private_key
75-
# response=transactions.create_issuing_tx(public_address, recipient, fee_each, private_key, more_coins, 0, othermeta)
76-
# return response
77-
# return str(name)
78-
#
79-
# @app.route('/colors/issue', methods = ['POST']) #WORKS
80-
# def issuenewcoins_clientside():
81-
# #JUST RETURN RAW HEX OF UNSIGNED TX
82-
# issuing_address=str(request.form['issuing_address'])
83-
# more_coins=int(request.form['more_coins'])
84-
# coin_recipients=str(request.form['coin_recipients']) #DISCREPANCY, SHOULD BE ARRAY for multiple
85-
# othermeta='COIN NAME HERE'
86-
#
87-
# fee=0.0001
88-
# print coin_recipients
89-
# print more_coins
90-
# print issuing_address
91-
# print fee
92-
# print othermeta
93-
# tx=transactions.create_issuing_tx_unsigned(issuing_address, coin_recipients, fee, more_coins,othermeta)
94-
# #return 'a'
95-
# return str(tx)
96-
#
97-
#
98-
# @app.route('/transactions', methods = ['POST'])
99-
# def pushtx():
100-
# txhex=str(request.form['transaction_hex'])
101-
# response=transactions.pushtx(txhex)
102-
# return str(response)
30+
#GET PARSED METADATA FOR OPEN ASSETS TRANSACTIONS IN BLOCK
31+
@app.route('/oa/blocks/<blockn>') #WORKS, needs color address
32+
def oas_in_block(blockn=None):
33+
oas=bitsource.oa_in_block(int(blockn))
34+
return str(oas)
35+
36+
@app.route('/colors/signed', methods=['POST'])
37+
def makenewcoin():
38+
public_address=str(request.form['public_address'])
39+
initial_coins=int(request.form['initial_coins'])
40+
name=str(request.form['name'])
41+
recipient=str(request.form['recipient'])
42+
fee_each=0.0001
43+
private_key=str(request.form['private_keys'])
44+
ticker=str(request.form['ticker'])
45+
description=str(request.form['description'])
46+
47+
response=transactions.make_new_coin(public_address, initial_coins, name, recipient, fee_each, private_key, ticker, description)
48+
#print response
49+
return response
50+
#return "hi"
51+
52+
@app.route('/transactions/colored', methods=['POST']) #DOESNT EXACTLY MATCH DOCS
53+
def transfer_transaction_serverside():
54+
fromaddr=str(request.form['public_address'])
55+
dest=str(request.form['recipient'])
56+
fee=float(request.form['fee']) #DOESNT MATCH DOCS
57+
private_key=str(request.form['private_key'])
58+
coloramt=int(request.form['coloramt'])
59+
60+
#inputs=request.form['inputs']
61+
inputs=str(request.form['inputs'])
62+
inputs=ast.literal_eval(inputs)
63+
64+
65+
inputcoloramt=int(request.form['inputcoloramt'])
66+
print fromaddr
67+
print dest
68+
print fee
69+
print private_key
70+
print coloramt
71+
print inputs
72+
print inputcoloramt
73+
response= transactions.create_transfer_tx(fromaddr, dest, fee, private_key, coloramt, inputs, inputcoloramt)
74+
return str(response)
75+
#return str(coloramt)
76+
77+
@app.route('/colors/statements/<address>') #WORKS
78+
def readmultistatements(address=None):
79+
result=addresses.read_opreturns_sent_by_address(address)
80+
return str(result)
81+
82+
@app.route('/colors/issue/signed', methods=['POST']) #WORKS
83+
def issuenewcoinsserverside(): #TO ONE RECIPIENT ADDRESS
84+
private_key=str(request.form['private_keys'])
85+
public_address=str(request.form['public_address'])
86+
more_coins=int(request.form['initial_coins'])
87+
recipient=str(request.form['recipients'])
88+
fee_each=0.0001
89+
name=str(request.form['name'])
90+
othermeta=str(name)
91+
92+
print private_key
93+
response=transactions.create_issuing_tx(public_address, recipient, fee_each, private_key, more_coins, 0, othermeta)
94+
return response
95+
return str(name)
96+
97+
@app.route('/colors/issue', methods = ['POST']) #WORKS
98+
def issuenewcoins_clientside():
99+
#JUST RETURN RAW HEX OF UNSIGNED TX
100+
issuing_address=str(request.form['issuing_address'])
101+
more_coins=request.form['more_coins']
102+
coin_recipients=str(request.form['coin_recipients']) #DISCREPANCY, SHOULD BE ARRAY for multiple
103+
othermeta='COIN NAME HERE'
104+
105+
fee=0.0001
106+
print coin_recipients
107+
print more_coins
108+
print issuing_address
109+
print fee
110+
print othermeta
111+
tx=transactions.create_issuing_tx_unsigned(issuing_address, coin_recipients, fee, more_coins,othermeta)
112+
#return 'a'
113+
return str(tx)
114+
115+
@app.route('/addresses/generate') # WORKS
116+
def makerandompair():
117+
return str(addresses.generate_secure_pair())
118+
119+
@app.route('/messages/<address>')
120+
def opreturns_sent_by_address(address=None):
121+
results=addresses.find_opreturns_sent_by_address(address)
122+
return str(results)
123+
124+
@app.route('/transactions', methods = ['POST'])
125+
def pushtx():
126+
txhex=str(request.form['transaction_hex'])
127+
response=transactions.pushtx(txhex)
128+
return str(response)
103129

104130
if __name__ == '__main__':
131+
#app.run(host= '0.0.0.0', debug=False)
105132
app.run()

node.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
import json
33

44

5-
node_url='127.0.0.1'#'71.198.63.116'#'199.188.192.144'#
5+
#node_url= '199.188.192.144' #'127.0.0.1'#'71.198.63.116'##
6+
node_url='127.0.0.1'
67
node_port='8332'
78
username='barisser'
89
password='2bf763d2132a2ccf3ea38077f79196ebd600f4a29aa3b1afd96feec2e7d80beb3d9e13d02d56de0f'

node.pyc

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)