etherdelta / bots Goto Github PK
View Code? Open in Web Editor NEWEtherDelta example bots
EtherDelta example bots
Hi there, I am trying to create "buy" order (sometimes "sell", it doesn't matter) and I get this: "Received messageresult from EtherDelta API, result is: Did not place order because available volume too low."
I send amount 999999999, but its happens with any amount.
How to fix this ? What am I doing wrong ? Thanks.
@zackcoburn and others, Hi.My smart contract wants to use ED's deposit function but at Ropsten two of my functions faild to action.
Errored: Gas required exceeds block gas limit: 30000000000000. An important gas estimation might also be the sign of a problem in the contract code. Please check loops and be sure you did not sent value to a non payable function (that's also the reason of strong gas estimation).
My code like this:
contract BotForEthdelta
{
//Failed. This function is for my contract deposit to ED.
function ContractToDelta(uint256 v) payable {
EtherDelta(addrEthDelta).deposit.value(v/10000 ether).gas(100)();//addrEthDelta is Ropsten's ED address(I founded it.), 1v= 1eth/10000
//has imported etherdeltatest.sol and my contract's balance is enougth.
}
//Failed. This function is for anyone deposit to ED throught my contract with value setting.
function SenderToDelta() payable {
EtherDelta(addrEthDelta).deposit.value(msg.value).gas(100)();//addrEthDelta is Ropsten's ED address(I founded it.)
}
//Can be run. Since I can not deposit to ED, decoded output ="-"
function BalanceInDelta(address addrEthDelta) returns (uint){
return (EtherDelta(addrEthDelta).balanceOf(0, address(this)));
}
}
BTW: Any test ED address provide for us?
Following instructions as per README.md in bots/python I get the following compile error:
(venv) aspera@ubuntu:$ uname -a16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Linux ubuntu 4.10.0-28-generic #32
(venv) aspera@ubuntu:$$ pip install -r web3.py/requirements-dev.txt
(venv) aspera@ubuntu:
Requirement already satisfied: bumpversion in ./venv/lib/python3.5/site-packages (from -r web3.py/requirements-dev.txt (line 1))
Collecting eth-testrpc>=1.3.3 (from -r web3.py/requirements-dev.txt (line 2))
Using cached eth_testrpc-1.3.3-py3-none-any.whl
Collecting ethereum<2.0,>=1.6.1 (from -r web3.py/requirements-dev.txt (line 3))
Collecting flaky>=3.3.0 (from -r web3.py/requirements-dev.txt (line 4))
Using cached flaky-3.4.0-py2.py3-none-any.whl
Collecting flake8==3.4.1 (from -r web3.py/requirements-dev.txt (line 5))
Using cached flake8-3.4.1-py2.py3-none-any.whl
Collecting hypothesis>=3.31.2 (from -r web3.py/requirements-dev.txt (line 6))
Collecting py-geth==1.10.2 (from -r web3.py/requirements-dev.txt (line 7))
Using cached py_geth-1.10.2-py3-none-any.whl
Collecting pytest>=3.2.1 (from -r web3.py/requirements-dev.txt (line 8))
Using cached pytest-3.3.2-py2.py3-none-any.whl
Collecting pytest-mock==1.* (from -r web3.py/requirements-dev.txt (line 9))
Using cached pytest_mock-1.6.3-py2.py3-none-any.whl
Collecting pytest-pythonpath>=0.3 (from -r web3.py/requirements-dev.txt (line 10))
Collecting pytest-watch==4.* (from -r web3.py/requirements-dev.txt (line 11))
Collecting pytest-xdist==1.* (from -r web3.py/requirements-dev.txt (line 12))
Using cached pytest_xdist-1.21.0-py2.py3-none-any.whl
Collecting tox>=1.8.0 (from -r web3.py/requirements-dev.txt (line 13))
Using cached tox-2.9.1-py2.py3-none-any.whl
Collecting when-changed (from -r web3.py/requirements-dev.txt (line 14))
Collecting Werkzeug>=0.11.10 (from eth-testrpc>=1.3.3->-r web3.py/requirements-dev.txt (line 2))
Using cached Werkzeug-0.14.1-py2.py3-none-any.whl
Requirement already satisfied: json-rpc>=1.10.3 in ./venv/lib/python3.5/site-packages (from eth-testrpc>=1.3.3->-r web3.py/requirements-dev.txt (line 2))
Requirement already satisfied: rlp>=0.4.7 in ./venv/lib/python3.5/site-packages (from eth-testrpc>=1.3.3->-r web3.py/requirements-dev.txt (line 2))
Requirement already satisfied: click>=6.6 in ./venv/lib/python3.5/site-packages (from eth-testrpc>=1.3.3->-r web3.py/requirements-dev.txt (line 2))
Requirement already satisfied: secp256k1 in ./venv/lib/python3.5/site-packages (from ethereum<2.0,>=1.6.1->-r web3.py/requirements-dev.txt (line 3))
Requirement already satisfied: PyYAML in ./venv/lib/python3.5/site-packages (from ethereum<2.0,>=1.6.1->-r web3.py/requirements-dev.txt (line 3))
Requirement already satisfied: pbkdf2 in ./venv/lib/python3.5/site-packages (from ethereum<2.0,>=1.6.1->-r web3.py/requirements-dev.txt (line 3))
Requirement already satisfied: pysha3>=1.0.1 in ./venv/lib/python3.5/site-packages (from ethereum<2.0,>=1.6.1->-r web3.py/requirements-dev.txt (line 3))
Requirement already satisfied: pyethash in ./venv/lib/python3.5/site-packages (from ethereum<2.0,>=1.6.1->-r web3.py/requirements-dev.txt (line 3))
Requirement already satisfied: repoze.lru in ./venv/lib/python3.5/site-packages (from ethereum<2.0,>=1.6.1->-r web3.py/requirements-dev.txt (line 3))
Collecting scrypt (from ethereum<2.0,>=1.6.1->-r web3.py/requirements-dev.txt (line 3))
Using cached scrypt-0.8.0.tar.gz
Requirement already satisfied: bitcoin in ./venv/lib/python3.5/site-packages (from ethereum<2.0,>=1.6.1->-r web3.py/requirements-dev.txt (line 3))
Requirement already satisfied: pycryptodome>=3.3.1 in ./venv/lib/python3.5/site-packages (from ethereum<2.0,>=1.6.1->-r web3.py/requirements-dev.txt (line 3))
Collecting mccabe<0.7.0,>=0.6.0 (from flake8==3.4.1->-r web3.py/requirements-dev.txt (line 5))
Using cached mccabe-0.6.1-py2.py3-none-any.whl
Collecting pyflakes<1.6.0,>=1.5.0 (from flake8==3.4.1->-r web3.py/requirements-dev.txt (line 5))
Using cached pyflakes-1.5.0-py2.py3-none-any.whl
Collecting pycodestyle<2.4.0,>=2.0.0 (from flake8==3.4.1->-r web3.py/requirements-dev.txt (line 5))
Using cached pycodestyle-2.3.1-py2.py3-none-any.whl
Collecting attrs (from hypothesis>=3.31.2->-r web3.py/requirements-dev.txt (line 6))
Using cached attrs-17.4.0-py2.py3-none-any.whl
Collecting coverage (from hypothesis>=3.31.2->-r web3.py/requirements-dev.txt (line 6))
Using cached coverage-4.4.2-cp35-cp35m-manylinux1_x86_64.whl
Collecting semantic-version>=2.6.0 (from py-geth==1.10.2->-r web3.py/requirements-dev.txt (line 7))
Using cached semantic_version-2.6.0-py3-none-any.whl
Requirement already satisfied: six>=1.10.0 in ./venv/lib/python3.5/site-packages (from pytest>=3.2.1->-r web3.py/requirements-dev.txt (line 8))
Collecting pluggy<0.7,>=0.5 (from pytest>=3.2.1->-r web3.py/requirements-dev.txt (line 8))
Requirement already satisfied: setuptools in ./venv/lib/python3.5/site-packages (from pytest>=3.2.1->-r web3.py/requirements-dev.txt (line 8))
Collecting py>=1.5.0 (from pytest>=3.2.1->-r web3.py/requirements-dev.txt (line 8))
Using cached py-1.5.2-py2.py3-none-any.whl
Collecting watchdog>=0.6.0 (from pytest-watch==4.->-r web3.py/requirements-dev.txt (line 11))
Collecting docopt>=0.6.2 (from pytest-watch==4.->-r web3.py/requirements-dev.txt (line 11))
Collecting colorama>=0.3.3 (from pytest-watch==4.->-r web3.py/requirements-dev.txt (line 11))
Using cached colorama-0.3.9-py2.py3-none-any.whl
Collecting pytest-forked (from pytest-xdist==1.->-r web3.py/requirements-dev.txt (line 12))
Using cached pytest_forked-0.2-py2.py3-none-any.whl
Collecting execnet>=1.1 (from pytest-xdist==1.->-r web3.py/requirements-dev.txt (line 12))
Using cached execnet-1.5.0-py2.py3-none-any.whl
Collecting virtualenv>=1.11.2; python_version != "3.2" (from tox>=1.8.0->-r web3.py/requirements-dev.txt (line 13))
Using cached virtualenv-15.1.0-py2.py3-none-any.whl
Requirement already satisfied: cffi>=1.3.0 in ./venv/lib/python3.5/site-packages (from secp256k1->ethereum<2.0,>=1.6.1->-r web3.py/requirements-dev.txt (line 3))
Collecting argh>=0.24.1 (from watchdog>=0.6.0->pytest-watch==4.->-r web3.py/requirements-dev.txt (line 11))
Using cached argh-0.26.2-py2.py3-none-any.whl
Collecting pathtools>=0.1.1 (from watchdog>=0.6.0->pytest-watch==4.->-r web3.py/requirements-dev.txt (line 11))
Collecting apipkg>=1.4 (from execnet>=1.1->pytest-xdist==1.->-r web3.py/requirements-dev.txt (line 12))
Using cached apipkg-1.4-py2.py3-none-any.whl
Requirement already satisfied: pycparser in ./venv/lib/python3.5/site-packages (from cffi>=1.3.0->secp256k1->ethereum<2.0,>=1.6.1->-r web3.py/requirements-dev.txt (line 3))
Building wheels for collected packages: scrypt
Running setup.py bdist_wheel for scrypt ... error
Complete output from command /home/aspera/venv/bin/python3 -u -c "import setuptools, tokenize;file='/tmp/pip-build-l6fiybcd/scrypt/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" bdist_wheel -d /tmp/tmpug1p9tixpip-wheel- --python-tag cp35:
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.5
copying scrypt.py -> build/lib.linux-x86_64-3.5
running build_ext
building '_scrypt' extension
creating build/temp.linux-x86_64-3.5
creating build/temp.linux-x86_64-3.5/src
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/crypto
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/scryptenc
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/util
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva/alg
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva/crypto
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva/util
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c src/scrypt.c -o build/temp.linux-x86_64-3.5/src/scrypt.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/lib/crypto/crypto_scrypt_smix_sse2.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/crypto/crypto_scrypt_smix_sse2.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/lib/crypto/crypto_scrypt_smix.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/crypto/crypto_scrypt_smix.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/lib/crypto/crypto_scrypt.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/crypto/crypto_scrypt.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/lib/scryptenc/scryptenc.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/scryptenc/scryptenc.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/lib/scryptenc/scryptenc_cpuperf.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/scryptenc/scryptenc_cpuperf.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/lib/util/memlimit.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/util/memlimit.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/libcperciva/alg/sha256.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva/alg/sha256.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/libcperciva/crypto/crypto_aes_aesni.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva/crypto/crypto_aes_aesni.o -O2
**x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/libcperciva/crypto/crypto_aes.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva/crypto/crypto_aes.o -O2
scrypt-1.2.0/libcperciva/crypto/crypto_aes.c:6:25: fatal error: openssl/aes.h: No such file or directory
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Failed building wheel for scrypt
**
Running setup.py clean for scrypt
Failed to build scrypt
Installing collected packages: Werkzeug, scrypt, ethereum, eth-testrpc, flaky, mccabe, pyflakes, pycodestyle, flake8, attrs, coverage, hypothesis, semantic-version, py-geth, pluggy, py, pytest, pytest-mock, pytest-pythonpath, argh, pathtools, watchdog, docopt, colorama, pytest-watch, pytest-forked, apipkg, execnet, pytest-xdist, virtualenv, tox, when-changed
Running setup.py install for scrypt ... error
Complete output from command /home/aspera/venv/bin/python3 -u -c "import setuptools, tokenize;file='/tmp/pip-build-l6fiybcd/scrypt/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-vt3evm98-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/aspera/venv/include/site/python3.5/scrypt:
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.5
copying scrypt.py -> build/lib.linux-x86_64-3.5
running build_ext
building '_scrypt' extension
creating build/temp.linux-x86_64-3.5
creating build/temp.linux-x86_64-3.5/src
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/crypto
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/scryptenc
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/util
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva/alg
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva/crypto
creating build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva/util
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c src/scrypt.c -o build/temp.linux-x86_64-3.5/src/scrypt.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/lib/crypto/crypto_scrypt_smix_sse2.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/crypto/crypto_scrypt_smix_sse2.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/lib/crypto/crypto_scrypt_smix.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/crypto/crypto_scrypt_smix.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/lib/crypto/crypto_scrypt.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/crypto/crypto_scrypt.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/lib/scryptenc/scryptenc.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/scryptenc/scryptenc.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/lib/scryptenc/scryptenc_cpuperf.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/scryptenc/scryptenc_cpuperf.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/lib/util/memlimit.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/lib/util/memlimit.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/libcperciva/alg/sha256.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva/alg/sha256.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/libcperciva/crypto/crypto_aes_aesni.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva/crypto/crypto_aes_aesni.o -O2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_CONFIG_H -DHAVE_CLOCK_GETTIME=1 -DHAVE_LIBRT=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_STRUCT_SYSINFO=1 -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 -DHAVE_STRUCT_SYSINFO_TOTALRAM=1 -DHAVE_SYSINFO=1 -DHAVE_SYS_SYSINFO_H=1 -D_FILE_OFFSET_BITS=64 -Iscrypt-1.2.0 -Iscrypt-1.2.0/lib -Iscrypt-1.2.0/lib/scryptenc -Iscrypt-1.2.0/lib/crypto -Iscrypt-1.2.0/lib/util -Iscrypt-1.2.0/libcperciva/cpusupport -Iscrypt-1.2.0/libcperciva/alg -Iscrypt-1.2.0/libcperciva/util -Iscrypt-1.2.0/libcperciva/crypto -I/usr/include/python3.5m -I/home/aspera/venv/include/python3.5m -c scrypt-1.2.0/libcperciva/crypto/crypto_aes.c -o build/temp.linux-x86_64-3.5/scrypt-1.2.0/libcperciva/crypto/crypto_aes.o -O2
scrypt-1.2.0/libcperciva/crypto/crypto_aes.c:6:25: fatal error: openssl/aes.h: No such file or directory
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Command "/home/aspera/venv/bin/python3 -u -c "import setuptools, tokenize;file='/tmp/pip-build-l6fiybcd/scrypt/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-vt3evm98-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/aspera/venv/include/site/python3.5/scrypt" failed with error code 1 in /tmp/pip-build-l6fiybcd/scrypt/
(venv) aspera@ubuntu:~$
Hi all and thanks to all that contributed to these bots.
Have you tried the taker dotnet bot? It cant take any trade.
Problems:
var functionInput = new object[] {
order.TokenGet,
order.AmountGet.Value,
order.TokenGive,
order.AmountGive.Value,
order.Expires,
order.Nonce,
order.User,
order.V,
order.R.HexToByteArray(),
order.S.HexToByteArray(),
};
var availableVol = await EtherDeltaContract.GetFunction("availableVolume").CallAsync(functionInput);
Anyone able to find a solution?
I have tried the example. everything works fine. However, if i want to getMarket, for example KNC, I got undefined as return. is my implementation wrong?
bots/python/etherdeltaclientservice.py
Line 362 in 3bc9411
Here it seems like all the method invocations contain a leading "42" number. I didn't find this described in the docs. Where does it come from?
I'm trying to replicate the python client behaviour using scala and akka-http without much luck. I keep ending up with the following response:
0{"sid":"ndWNgwRDSzvcRkioAABg","upgrades":[],"pingInterval":25000,"pingTimeout":60000}
40
Hi,
I have studied the code you use to create a signature :
https://github.com/etherdelta/bots/blob/master/js/service.js
const sign = (msgToSignIn, privateKeyIn) => {
const prefixMessage = (msgIn) => {
let msg = msgIn;
msg = new Buffer(msg.slice(2), 'hex');
msg = Buffer.concat([
new Buffer(`\x19Ethereum Signed Message:\n${msg.length.toString()}`),
msg]);
msg = self.web3.sha3(`0x${msg.toString('hex')}`, { encoding: 'hex' });
msg = new Buffer(msg.slice(2), 'hex');
return `0x${msg.toString('hex')}`;
};
const privateKey = privateKeyIn.substring(0, 2) === '0x' ?
privateKeyIn.substring(2, privateKeyIn.length) : privateKeyIn;
const msgToSign = prefixMessage(msgToSignIn);
try {
const sig = ethUtil.ecsign(
new Buffer(msgToSign.slice(2), 'hex'),
new Buffer(privateKey, 'hex'));
const r = `0x${sig.r.toString('hex')}`;
const s = `0x${sig.s.toString('hex')}`;
const v = sig.v;
const result = { r, s, v, msg: msgToSign };
return result;
} catch (err) {
throw new Error(err);
}
};
With that I have modified the function CreateOrder in the c# Bot, because the signature mechanism didn't work :
internal Order CreateOrder(OrderType orderType, BigInteger expires, BigInteger price, BigInteger amount)
{
if (Config.PrivateKey.Length != 64)
throw new Exception("WARNING: user_wallet_private_key must be a hexadecimal string of 64 characters long");
var uc = new UnitConversion();
var amountBigNum = amount;
var amountBaseBigNum = (amount * price) / uc.ToWei(1);
var tokenGet = orderType == OrderType.Buy ? Config.Token : ZeroToken;
var tokenGive = orderType == OrderType.Sell ? Config.Token : ZeroToken;
var amountGet = orderType == OrderType.Buy ? amountBigNum : amountBaseBigNum;
var amountGive = orderType == OrderType.Sell ? amountBigNum : amountBaseBigNum;
var orderNonce = new Random().Next();
var contractAddr = Web3.ToChecksumAddress(Config.AddressEtherDelta);
tokenGet = Web3.ToChecksumAddress(tokenGet);
tokenGive = Web3.ToChecksumAddress(tokenGive);
var user = Web3.ToChecksumAddress(Config.User);
/*
* First Step : Hash the order
*/
var plainData = new object[]
{
contractAddr,
tokenGet,
amountGet,
tokenGive,
amountGive,
expires,
orderNonce
};
var prms = new[] {
new Parameter("address",1),
new Parameter("address",1),
new Parameter("uint256",1),
new Parameter("address",1),
new Parameter("uint256",1),
new Parameter("uint256",1),
new Parameter("uint256",1)
};
var pe = new ParametersEncoder();
var data = pe.EncodeParameters(prms, plainData);
var ms = new MessageSigner();
var messageHashBytes = ms.Hash(data);
/*
* Second step : create the ethSignaturePrefixx
*/
var ethSignaturePrefixByteArray = Encoding.ASCII.GetBytes($"\u0019Ethereum Signed Message:\n{messageHashBytes.Length}");
/*
* Third Step : add the ethPrefix to the hashBytes and hash again
*/
int length = ethSignaturePrefixByteArray.Length + messageHashBytes.Length;
byte[] sum = new byte[length];
ethSignaturePrefixByteArray.CopyTo(sum, 0);
messageHashBytes.CopyTo(sum, ethSignaturePrefixByteArray.Length);
var signatureBase = ms.Hash(sum);
/*
* Fourth Step : Sign the message
* I have created a custom function CreateStringSignature2
* CreateStringSignature2 is the same function that CreateStringSignature in Nethereum
* the only difference is that CreateStringSignature2 is public
*/
var key = new EthECKey(Config.PrivateKey.HexToByteArray(), true);
var signature = CreateStringSignature2(key.SignAndCalculateV(signatureBase));
var ethEcdsa = MessageSigner.ExtractEcdsaSignature(signature);
/*
* Fifth Step : Create the order
*/
var order = new Order
{
AmountGet = new HexBigInteger(amountGet),
AmountGive = new HexBigInteger(amountGive),
TokenGet = tokenGet,
TokenGive = tokenGive,
ContractAddr = contractAddr,
Expires = expires,
Nonce = orderNonce,
User = user,
V = ethEcdsa.V,
R = ethEcdsa.R.ToHex(true),
S = ethEcdsa.S.ToHex(true)
};
/*
* Checking Signature
*/
/*
* First Step : Create a Fake WebSocket Message
*/
var message = new Message
{
Event = "message",
Data = new
{
amountGive = order.AmountGive.Value,
tokenGive = order.TokenGive,
amountGet = order.AmountGet.Value,
tokenGet = order.TokenGet,
contractAddr = Config.AddressEtherDelta,
expires = order.Expires,
nonce = order.Nonce,
user = order.User,
v = order.V,
r = order.R,
s = order.S,
}
}.ToString();
/*
* Second Step : Hash the message
*/
Message messageParsed = Message.ParseMessage(message);
var orderChecking = (JObject)messageParsed.Data;
plainData = new object[]
{
Web3.ToChecksumAddress(orderChecking["contractAddr"].ToString()),
Web3.ToChecksumAddress(orderChecking["tokenGet"].ToString()),
new BigInteger((decimal)orderChecking["amountGet"]),
Web3.ToChecksumAddress(orderChecking["tokenGive"].ToString()),
new BigInteger((decimal)orderChecking["amountGive"]),
new BigInteger((decimal)orderChecking["expires"]),
new BigInteger((decimal)orderChecking["nonce"]),
};
prms = new[] {
new Parameter("address",1),
new Parameter("address",1),
new Parameter("uint256",1),
new Parameter("address",1),
new Parameter("uint256",1),
new Parameter("uint256",1),
new Parameter("uint256",1)
};
pe = new ParametersEncoder();
data = pe.EncodeParameters(prms, plainData);
messageHashBytes = ms.Hash(data);
/*
* Third step : create the ethSignaturePrefix
*/
ethSignaturePrefixByteArray = Encoding.ASCII.GetBytes($"\u0019Ethereum Signed Message:\n{messageHashBytes.Length}");
/*
* Fourth Step : add the ethPrefix to the hashBytes and hash again
*/
length = ethSignaturePrefixByteArray.Length + messageHashBytes.Length;
sum = new byte[length];
ethSignaturePrefixByteArray.CopyTo(sum, 0);
messageHashBytes.CopyTo(sum, ethSignaturePrefixByteArray.Length);
signatureBase = ms.Hash(sum);
/*
* Retreive the public key and compare
*/
string publicKey = ms.EcRecover(signatureBase, signature);
if (publicKey.ToLower() != Config.User.ToLower())
throw new Exception("WARNING: incorect signature");
return order;
}
At the end of the function I check if the publickey that I have retreived from the signature matchs my public key and it works. But as soon as I send the message via the websocket I have a error :
Did not place order because available volume too low.
This error means for me that my signature is not correct.
If I remove the prefix I have still a error
I don't understand why. Can you help me ?
Thanks
Jehan
Hello,
How does the fraction param works from the takeOrder function
Is it right (tokenGive two times)?
var plainData = new object[] {
Config.AddressEtherDelta,
tokenGive,
amountGet,
tokenGive,
amountGive,
expires,
orderNonce
};
Does the dotnet library work at all?
Hello, I have faced with and issue that I am unable to connect to socket when trying to use maker.js or taker.js files. Here is the console response:
Is there something wrong with socket connection or possibly some issues in node code?
P.S. I have configured proper user address in taker.js and I tried to use different connections for it and result the same - "Could not connect to socket"
Just thought you should know given the journey I've been on trying to get this shit up and running.
Unfortunately (and word of warning for anyone else reading), I thiiiiiiiiink game theory says that this actually can't be a profitable endeavor. Sort of like prisoner's dilemma. I didn't actually make money running last night due to being beaten out by others at a rate that makes the amount I pay in gas fees not sustainable.
Sooo I'm going to take a day of rest, then get started on capturing trade data and working on market making.
@zackcoburn Is your understanding that it's not actually profitable to try and run one of these typo-buying bots? People will just increase their bots gas usage until all the profits disappear. There's always a chance you lose out -- either being a block behind the successful trade, or failing to pay as much in gas as the other bot. Some bots pay 50% fees. I ran with 55% fees as gas last night and had 3 successful trades out of 18. So, on average, running at a loss still. Does that align with your understanding? Any ideas on other clever things I could try to make profits while building up to market making? :)
As the title says, I can't load the ABI in Python. I followed the install directions (got websocket and web3) but get this error whenever I run the etherdeltaclientservice_test file:
FileNotFoundError: [Errno 2] No such file or directory: '../contracts/etherdelta.json'
What did I miss? Thanks in advance.
I was reading through the source code for the maker bot, and it seems as though there was a line copied without replacing the variable name. See L92.
# Create sell orders
for sellordernr in range(1,sellOrdersToPlace+1):
price = midmarket + sellordernr * midmarket * marginfactor
amount = sellVolumeToPlace / sellOrdersToPlace
...
# Create buy orders
for sellordernr in range(1,sellOrdersToPlace+1):
price = midmarket - sellordernr * midmarket * marginfactor
amount = float(buyVolumeToPlace) / float(price) / float(buyOrdersToPlace)
...
Suggested fix:
L92-93
- for sellordernr in range(1,sellOrdersToPlace+1):
- price = midmarket - sellordernr * midmarket * marginfactor
+ for buyordernr in range(1,buyOrdersToPlace+1):
+ price = midmarket - buyordernr * midmarket * marginfactor
Compare to maker.js
for (let i = 0; i < sellOrdersToPlace; i += 1) {
const price = midMarket + ((i + 1) * midMarket * 0.05);
const amount = service.toEth(sellVolumeToPlace / sellOrdersToPlace, token.decimals);
...
for (let i = 0; i < buyOrdersToPlace; i += 1) {
const price = midMarket - ((i + 1) * midMarket * 0.05);
const amount = service.toEth(buyVolumeToPlace / price / buyOrdersToPlace, token.decimals);
Hey there, I'm using the python maker and am trying to debug an issue I'm seeing. I have the following account balances for a token:
Wallet account balance: 0.048600659999999997 ETH
Wallet token balance: 0.000000000000000000 tokens
EtherDelta ETH balance: 0.228337000000000012 ETH
EtherDelta token balance: 1700.000000000000000000 tokens
My "buy" order is able to get placed successfully, but my "sell" order gives me the following error:
Received messageresult from EtherDelta API, result is: Did not place order because available volume too low.
Here are the attempted order placements:
Creating 'sell' order for 0.050000000000000003 tokens @ 0.000153527958448218 ETH/token
...
Creating 'buy' order for 542.789301542363887165 tokens @ 0.000092116775068931 ETH/token
...
The resulting orderbook is:
My Order book
-------------
--------
0.00009211677506893083 542.789
I'm lost because I seem to have a sufficient token balance deposited in ED in order to make the sell. Any idea what might be going on? Thanks so much!
I have 0.001 ETH (maybe less actually than displayed) on Wallet and 0.009 ETH on EtherDelta. I try to buy 0.06 PPT for 0.0010200000000000012 ETH using dotnet library, but TakeOrder throw exception "Order will fail". Why?
How i can deposit and withdraw ETH or Tokens with javascript?
I get the following error while running the maker.py file
Traceback (most recent call last):
File "/home/prajit/web3.py/web3/contract.py", line 748, in call_contract_function
output_data = decode_abi(output_types, return_data)
File "/home/prajit/venv/lib/python3.5/site-packages/eth_abi/abi.py", line 109, in decode_abi
return decoder(stream)
File "/home/prajit/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 102, in call
return self.decode(stream)
File "/home/prajit/venv/lib/python3.5/site-packages/eth_utils/functional.py", line 22, in inner
return callback(fn(*args, **kwargs))
File "/home/prajit/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 140, in decode
yield decoder(stream)
File "/home/prajit/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 102, in call
return self.decode(stream)
File "/home/prajit/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 165, in decode
raw_data = cls.read_data_from_stream(stream)
File "/home/prajit/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 247, in read_data_from_stream
len(data),
eth_abi.exceptions.InsufficientDataBytes: Tried to read 32 bytes. Only got 0 bytes
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "maker.py", line 28, in
es.printBalances(token, userAccount)
File "/home/prajit/etherdeltaclientservice.py", line 184, in printBalances
print("Wallet token balance: %.18f tokens" % self.getBalance(token, userAccount))
File "/home/prajit/etherdeltaclientservice.py", line 77, in getBalance
balance = self.contractToken.call().balanceOf(user)
File "/home/prajit/web3.py/web3/contract.py", line 770, in call_contract_function
raise BadFunctionCallOutput(msg) from e
web3.exceptions.BadFunctionCallOutput: Could not decode contract function call balanceOf return data 0x for output_types ['uint256']
This is the error i get while running taker.py file
Traceback (most recent call last):
File "/home/prajit/web3.py/web3/contract.py", line 748, in call_contract_function
output_data = decode_abi(output_types, return_data)
File "/home/prajit/venv/lib/python3.5/site-packages/eth_abi/abi.py", line 109, in decode_abi
return decoder(stream)
File "/home/prajit/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 102, in call
return self.decode(stream)
File "/home/prajit/venv/lib/python3.5/site-packages/eth_utils/functional.py", line 22, in inner
return callback(fn(*args, **kwargs))
File "/home/prajit/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 140, in decode
yield decoder(stream)
File "/home/prajit/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 102, in call
return self.decode(stream)
File "/home/prajit/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 165, in decode
raw_data = cls.read_data_from_stream(stream)
File "/home/prajit/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 247, in read_data_from_stream
len(data),
eth_abi.exceptions.InsufficientDataBytes: Tried to read 32 bytes. Only got 0 bytes
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "taker.py", line 24, in
es.printBalances(token, userAccount)
File "/home/prajit/etherdeltaclientservice.py", line 184, in printBalances
print("Wallet token balance: %.18f tokens" % self.getBalance(token, userAccount))
File "/home/prajit/etherdeltaclientservice.py", line 77, in getBalance
balance = self.contractToken.call().balanceOf(user)
File "/home/prajit/web3.py/web3/contract.py", line 770, in call_contract_function
raise BadFunctionCallOutput(msg) from e
web3.exceptions.BadFunctionCallOutput: Could not decode contract function call balanceOf return data 0x for output_types ['uint256']
Basically they are the same errors. Can someone help me figure out whats the problem?
Are etherdelta API still being supported at all or it's time to leave it? Should we expect bots updates according to this for example? It this method of hashing and signin is actual?
I am running Ubuntu 16.04 LTS. I followed all installation instructions shown here on github of this project. However, when executing the .py files it return me errors regarding missing modules. I then installed them all using pip install but there are too many of them. I installed all prerequisites.
(very) possibly it is me, not understanding python too much. Is there a short overview of the steps from scratch to executing .py files? So like 1. install the zip file, 2. terminal -> enter command x 3. etcetera.
If there is any more input needed, please ask. Thanks.
Getting this error when running "node taker.js". I have added the address and private key on line 9 and 10.
const [walletETH, walletToken, EtherDeltaETH, EtherDeltaToken] = results;
^
SyntaxError: Unexpected token [
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:374:25)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:442:10)
at startup (node.js:136:18)
at node.js:966:3
I'm wondering if it is possible to make trades on EtherDelta with another contract addresses than 0x8d12a197cb00d4747a1fe03395095ce2a5cc6819 ?
I noticed this account: https://etherscan.io/tx/0x77e904ddde677414d9c9307e57754783433040c4e957ea64bbc719d6b9050421
He is making trades with the contract address 0xf43b43869dd95e53923b30a79902915c1faa47d3
Hi,
The script fails at the line
from web3.utils.normalizers import abi_ens_resolver
I'm using Windows 10 machine with Anaconda Python 3.6.
For context, I installed the following packages from precompiled binaries
I installed web3 and websocket from pip.
Hope someone can help. Thanks in advance.
need to use sockets01.etherdelta.com to sockets06.etherdelta.com to solve it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.