Add interface signature generator
This commit is contained in:
parent
03856123d2
commit
c956d9b202
9
Makefile
9
Makefile
@ -3,17 +3,22 @@
|
|||||||
# File-version: 5
|
# File-version: 5
|
||||||
|
|
||||||
INPUTS = $(wildcard *.sol)
|
INPUTS = $(wildcard *.sol)
|
||||||
OUTPUTS = $(patsubst %.sol, %.json, $(INPUTS))
|
OUTPUTS_JSON = $(patsubst %.sol, %.json, $(INPUTS))
|
||||||
|
OUTPUTS_INTERFACE = $(patsubst %.sol, %.interface, $(INPUTS))
|
||||||
|
OUTPUTS = ${OUTPUTS_JSON} ${OUTPUTS_INTERFACE}
|
||||||
PREFIX = /usr/local/share/cic/solidity/abi
|
PREFIX = /usr/local/share/cic/solidity/abi
|
||||||
|
|
||||||
#%.abi.json: $(wildcard *.sol)
|
#%.abi.json: $(wildcard *.sol)
|
||||||
# install -vDm0644 $@ $(PREFIX)/$@
|
# install -vDm0644 $@ $(PREFIX)/$@
|
||||||
|
|
||||||
.SUFFIXES: .sol .json
|
.SUFFIXES: .sol .json .interface
|
||||||
|
|
||||||
.sol.json:
|
.sol.json:
|
||||||
solc $(basename $@).sol --abi | awk 'NR>3' > $@
|
solc $(basename $@).sol --abi | awk 'NR>3' > $@
|
||||||
|
|
||||||
|
.sol.interface:
|
||||||
|
bash $(basename $@).sol > $@
|
||||||
|
|
||||||
all: $(OUTPUTS)
|
all: $(OUTPUTS)
|
||||||
|
|
||||||
install: $(OUTPUTS)
|
install: $(OUTPUTS)
|
||||||
|
29
calculate_eip165.py
Normal file
29
calculate_eip165.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# standard imports
|
||||||
|
import logging
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# external imports
|
||||||
|
import sha3
|
||||||
|
|
||||||
|
#logging.basicConfig(level=logging.WARNING)
|
||||||
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
|
logg = logging.getLogger()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
f = open(sys.argv[1], 'r')
|
||||||
|
z = b''
|
||||||
|
for i in range(32):
|
||||||
|
z += b'\x00'
|
||||||
|
while True:
|
||||||
|
l = f.readline().rstrip()
|
||||||
|
if l == '':
|
||||||
|
break
|
||||||
|
logg.debug('line {}'.format(l))
|
||||||
|
h = sha3.keccak_256()
|
||||||
|
h.update(l.encode('utf-8'))
|
||||||
|
r = h.digest()
|
||||||
|
z = bytes([a ^ b for a, b in zip(r, z)])
|
||||||
|
logg.debug('{} -> {}'.format(r.hex(), z.hex()))
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
print(z[:4].hex())
|
@ -1,16 +0,0 @@
|
|||||||
import sys
|
|
||||||
import web3
|
|
||||||
|
|
||||||
f = open(sys.argv[1], 'r')
|
|
||||||
z = b''
|
|
||||||
for i in range(32):
|
|
||||||
z += b'\x00'
|
|
||||||
while True:
|
|
||||||
l = f.readline()
|
|
||||||
if l == '':
|
|
||||||
break
|
|
||||||
print('line {}'.format(l))
|
|
||||||
h = web3.Web3.keccak(text=l)
|
|
||||||
z = bytes([a ^ b for a, b in zip(h, z)])
|
|
||||||
print(h.hex(), z.hex())
|
|
||||||
f.close()
|
|
9
to_interface.sh
Normal file
9
to_interface.sh
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
d=`mktemp -d`
|
||||||
|
b=`basename $1`
|
||||||
|
s=${b%%.*}
|
||||||
|
echo $s
|
||||||
|
python3 reduce_to_methods.py $1 > $d/$b
|
||||||
|
python3 calculate_eip165.py $d/$b > ${s}.interface
|
||||||
|
>&2 echo $d/$b
|
Loading…
Reference in New Issue
Block a user