Manually merges inter-codebase tests, setup, pipfile, config classes, and sol source, respectively updates imports.
|
@ -12,3 +12,7 @@ __pycache__
|
|||
_temp_test_datastore
|
||||
.mypy_cache
|
||||
.pytest_cache/
|
||||
/logs
|
||||
/registrar.json
|
||||
/dist
|
||||
chains
|
||||
|
|
1
Pipfile
|
@ -25,6 +25,7 @@ eth-account = "*"
|
|||
"web3" = "*"
|
||||
appdirs = "*"
|
||||
populus = {git = "https://github.com/nucypher/Bropulus.git"}
|
||||
eth-tester = "*"
|
||||
|
||||
[dev-packages]
|
||||
pytest = "*"
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
__pycache__
|
||||
*.pyc
|
||||
/.venv
|
||||
/*.egg-info
|
||||
/build
|
||||
/.cache
|
||||
*.so
|
||||
/MANIFEST
|
||||
/.tox
|
||||
.idea
|
||||
/logs
|
||||
/registrar.json
|
||||
/dist
|
||||
chains
|
||||
.pytest_cache
|
|
@ -1,16 +0,0 @@
|
|||
[[source]]
|
||||
url = "https://pypi.python.org/simple"
|
||||
verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
pdbpp = "*"
|
||||
ipython = "*"
|
||||
populus = "*"
|
||||
cytoolz = "*"
|
||||
appdirs = "*"
|
||||
eth-tester = "*"
|
||||
|
||||
[dev-packages]
|
||||
pytest = "*"
|
||||
pdbpp = "*"
|
|
@ -1,623 +0,0 @@
|
|||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "49f8e3c689e21af3ce393f45d06634faf8a91f0c3dcbfdd215d8869f78f39c64"
|
||||
},
|
||||
"host-environment-markers": {
|
||||
"implementation_name": "cpython",
|
||||
"implementation_version": "3.6.3",
|
||||
"os_name": "posix",
|
||||
"platform_machine": "x86_64",
|
||||
"platform_python_implementation": "CPython",
|
||||
"platform_release": "4.13.0-31-generic",
|
||||
"platform_system": "Linux",
|
||||
"platform_version": "#34-Ubuntu SMP Fri Jan 19 16:34:46 UTC 2018",
|
||||
"python_full_version": "3.6.3",
|
||||
"python_version": "3.6",
|
||||
"sys_platform": "linux"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.python.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"anyconfig": {
|
||||
"hashes": [
|
||||
"sha256:d96ef87d545c112eb6794b85419948b71cd17bf85b95a26e825182d010494198"
|
||||
],
|
||||
"version": "==0.9.3"
|
||||
},
|
||||
"appdirs": {
|
||||
"hashes": [
|
||||
"sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e",
|
||||
"sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92"
|
||||
],
|
||||
"version": "==1.4.3"
|
||||
},
|
||||
"argh": {
|
||||
"hashes": [
|
||||
"sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3",
|
||||
"sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65"
|
||||
],
|
||||
"version": "==0.26.2"
|
||||
},
|
||||
"attrs": {
|
||||
"hashes": [
|
||||
"sha256:a17a9573a6f475c99b551c0e0a812707ddda1ec9653bed04c13841404ed6f450",
|
||||
"sha256:1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9"
|
||||
],
|
||||
"version": "==17.4.0"
|
||||
},
|
||||
"bitcoin": {
|
||||
"hashes": [
|
||||
"sha256:11ba70bd9e1c764f6bb2c4bd4c7fbebd5c9053c73f4d4325b00a98869a8b7236"
|
||||
],
|
||||
"version": "==1.1.42"
|
||||
},
|
||||
"certifi": {
|
||||
"hashes": [
|
||||
"sha256:14131608ad2fd56836d33a71ee60fa1c82bc9d2c8d98b7bdbc631fe1b3cd1296",
|
||||
"sha256:edbc3f203427eef571f79a7692bb160a2b0f7ccaa31953e99bd17e307cf63f7d"
|
||||
],
|
||||
"version": "==2018.1.18"
|
||||
},
|
||||
"cffi": {
|
||||
"hashes": [
|
||||
"sha256:5d0d7023b72794ea847725680e2156d1d01bc698a9007fccce46d03c904fe093",
|
||||
"sha256:86903c0afab4a3390170aca61f753f5adad8ffff947030719ee44dedc5b68403",
|
||||
"sha256:7d35678a54da0d3f1bc30e3a58a232043753d57c691875b5a75e4e062793bc9a",
|
||||
"sha256:824cac33906be5c8e976f0d950924d88ec058989ef9cd2f77f5cd53cec417635",
|
||||
"sha256:6ca52651f6bd4b8647cb7dee15c82619de3e13490f8e0bc0620830a2245b51d1",
|
||||
"sha256:a183959a4b1e01d6172aeed356e2523ec8682596075aa6cf0003fe08da959a49",
|
||||
"sha256:9532c5bc0108bd0fe43c0eb3faa2ef98a2db60fc0d4019f106b88d46803dd663",
|
||||
"sha256:96652215ef328262b5f1d5647632bd342ac6b31dfbc495b21f1ab27cb06d621d",
|
||||
"sha256:6c99d19225e3135f6190a3bfce2a614cae8eaa5dcaf9e0705d4ccb79a3959a3f",
|
||||
"sha256:12cbf4c04c1ad07124bfc9e928c01e282feac9ec7dd72a18042d4fc56456289a",
|
||||
"sha256:69c37089ccf10692361c8d14dbf4138b00b46741ffe9628755054499f06ed548",
|
||||
"sha256:b8d1454ef627098dc76ccfd6211a08065e6f84efe3754d8d112049fec3768e71",
|
||||
"sha256:cd13f347235410c592f6e36395ee1c136a64b66534f10173bfa4df1dc88f47d0",
|
||||
"sha256:0640f12f04f257c4467075a804a4920a5d07ef91e11c525fc65d715c08231c81",
|
||||
"sha256:89a8d05b96bdeca8fdc89c5fa9469a357d30f6c066262e92c0c8d2e4d3c53cae",
|
||||
"sha256:a67c430a9bde73ae85b0c885fcf41b556760e42ea74c16dc70431a349989b448",
|
||||
"sha256:7a831170b621e98f45ed1d5758325be19619a593924127a0a47af9a72a117319",
|
||||
"sha256:796d0379102e6da5215acfcd20e8e69cca9d97309215b4ce088fe175b1c2f586",
|
||||
"sha256:0fe3b3d571543a4065059d1d3d6d39f4ca6da0f2207ad13547094522e32ead46",
|
||||
"sha256:678135090c311780382b1dd3f828f715583ea8a69687ed053c047d3cec6625d6",
|
||||
"sha256:f4992cd7b4c867f453d44c213ee29e8fd484cf81cfece4b6e836d0982b6fa1cf",
|
||||
"sha256:6d191fb20138fe1948727b20e7b96582b7b7e676135eabf72d910e10bf7bfa65",
|
||||
"sha256:ec208ca16e57904dd7f4c7568665f80b1f7eb7e3214be014560c28def219060d",
|
||||
"sha256:b3653644d6411bf4bd64c1f2ca3cb1b093f98c68439ade5cef328609bbfabf8c",
|
||||
"sha256:f4719d0bafc5f0a67b2ec432086d40f653840698d41fa6e9afa679403dea9d78",
|
||||
"sha256:87f837459c3c78d75cb4f5aadf08a7104db15e8c7618a5c732e60f252279c7a6",
|
||||
"sha256:df9083a992b17a28cd4251a3f5c879e0198bb26c9e808c4647e0a18739f1d11d"
|
||||
],
|
||||
"version": "==1.11.4"
|
||||
},
|
||||
"chardet": {
|
||||
"hashes": [
|
||||
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691",
|
||||
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"
|
||||
],
|
||||
"version": "==3.0.4"
|
||||
},
|
||||
"click": {
|
||||
"hashes": [
|
||||
"sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d",
|
||||
"sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b"
|
||||
],
|
||||
"version": "==6.7"
|
||||
},
|
||||
"contextlib2": {
|
||||
"hashes": [
|
||||
"sha256:f5260a6e679d2ff42ec91ec5252f4eeffdcf21053db9113bd0a8e4d953769c00",
|
||||
"sha256:509f9419ee91cdd00ba34443217d5ca51f5a364a404e1dce9e8979cea969ca48"
|
||||
],
|
||||
"version": "==0.5.5"
|
||||
},
|
||||
"cytoolz": {
|
||||
"hashes": [
|
||||
"sha256:5ebb55855a8bb7800afa58e52408763935527e0305f35600c71b43c86013dec2"
|
||||
],
|
||||
"version": "==0.9.0"
|
||||
},
|
||||
"decorator": {
|
||||
"hashes": [
|
||||
"sha256:94d1d8905f5010d74bbbd86c30471255661a14187c45f8d7f3e5aa8540fdb2e5",
|
||||
"sha256:7d46dd9f3ea1cf5f06ee0e4e1277ae618cf48dfb10ada7c8427cd46c42702a0e"
|
||||
],
|
||||
"version": "==4.2.1"
|
||||
},
|
||||
"eth-abi": {
|
||||
"hashes": [
|
||||
"sha256:e6a50d3e0a1de26e55f8ec88e1854560191d2d27ac64c12363141b40065a9d38",
|
||||
"sha256:ce1d514390b331d7dd63e6f0d9d8fdb289e2f5974e5346dfa91e42aefe452e8e"
|
||||
],
|
||||
"version": "==0.5.0"
|
||||
},
|
||||
"eth-keyfile": {
|
||||
"hashes": [
|
||||
"sha256:585d326ea6fe20afa6c8ec232613a285de7e3d722643107a85a13963b15a1fc6",
|
||||
"sha256:512b331ca97a4fb0a252a320b85c97c1b675c25026be4e9bc287ca9839828cf8"
|
||||
],
|
||||
"version": "==0.4.1"
|
||||
},
|
||||
"eth-keys": {
|
||||
"hashes": [
|
||||
"sha256:0055ad91bfeee4d0a43e9be76ba7b5038eb3cba7c3e0bece8b140045d493c37a",
|
||||
"sha256:5f1fc4830ce0da32e2c7bb5a593c429cc4a257996d3a0db0131894918c88b3dc"
|
||||
],
|
||||
"version": "==0.1.0b4"
|
||||
},
|
||||
"eth-tester": {
|
||||
"hashes": [
|
||||
"sha256:0a04d8c0d57e62f2aaf51676db191aa5a89921a2e1db192ca6498f9afadc21f6",
|
||||
"sha256:c6b653f34f305aea02f778269f381fbda9150105702e4dd89414114dd2730775"
|
||||
],
|
||||
"version": "==0.1.0b15"
|
||||
},
|
||||
"eth-testrpc": {
|
||||
"hashes": [
|
||||
"sha256:1e07d4a9524b4fa25c26575bba221a9b5949ab743aade5726fe418be3e66c172",
|
||||
"sha256:64ca820db8ae840bedcb6657a1f235f5a28f68784b345f6b47db9886dc558b89"
|
||||
],
|
||||
"version": "==1.3.3"
|
||||
},
|
||||
"eth-utils": {
|
||||
"hashes": [
|
||||
"sha256:202a813b5ef0812d5f0d050cb725b1f4a6212a08d0631099cbee6fd9df1bfa4f",
|
||||
"sha256:fea1953c6ae90a4f5e97745a50c1e1f5ce43d63f28c9fe1659725177c28275a1"
|
||||
],
|
||||
"version": "==0.7.4"
|
||||
},
|
||||
"ethereum": {
|
||||
"hashes": [
|
||||
"sha256:2c3baa6ff41398088c9d35541c551f194eadc57dc70d56068af3381780fe234d"
|
||||
],
|
||||
"version": "==1.6.1"
|
||||
},
|
||||
"fancycompleter": {
|
||||
"hashes": [
|
||||
"sha256:d2522f1f3512371f295379c4c0d1962de06762eb586c199620a2a5d423539b12"
|
||||
],
|
||||
"version": "==0.8"
|
||||
},
|
||||
"idna": {
|
||||
"hashes": [
|
||||
"sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4",
|
||||
"sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f"
|
||||
],
|
||||
"version": "==2.6"
|
||||
},
|
||||
"ipython": {
|
||||
"hashes": [
|
||||
"sha256:fcc6d46f08c3c4de7b15ae1c426e15be1b7932bcda9d83ce1a4304e8c1129df3",
|
||||
"sha256:51c158a6c8b899898d1c91c6b51a34110196815cc905f9be0fa5878e19355608"
|
||||
],
|
||||
"version": "==6.2.1"
|
||||
},
|
||||
"ipython-genutils": {
|
||||
"hashes": [
|
||||
"sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8",
|
||||
"sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"
|
||||
],
|
||||
"version": "==0.2.0"
|
||||
},
|
||||
"jedi": {
|
||||
"hashes": [
|
||||
"sha256:d795f2c2e659f5ea39a839e5230d70a0b045d0daee7ca2403568d8f348d0ad89",
|
||||
"sha256:d6e799d04d1ade9459ed0f20de47c32f2285438956a677d083d3c98def59fa97"
|
||||
],
|
||||
"version": "==0.11.1"
|
||||
},
|
||||
"json-rpc": {
|
||||
"hashes": [
|
||||
"sha256:bb62b2fefd8dd9c639e743c5556b8fa882b38145c0e871a731aa42e0b83754ab",
|
||||
"sha256:21f04a98d312eaec1b200ea91c147ef6e3b9fc0219aff5bd940e50b6c446d3b5"
|
||||
],
|
||||
"version": "==1.10.8"
|
||||
},
|
||||
"jsonschema": {
|
||||
"hashes": [
|
||||
"sha256:000e68abd33c972a5248544925a0cae7d1125f9bf6c58280d37546b946769a08",
|
||||
"sha256:6ff5f3180870836cae40f06fa10419f557208175f13ad7bc26caa77beb1f6e02"
|
||||
],
|
||||
"version": "==2.6.0"
|
||||
},
|
||||
"parso": {
|
||||
"hashes": [
|
||||
"sha256:a7bb86fe0844304869d1c08e8bd0e52be931228483025c422917411ab82d628a",
|
||||
"sha256:5815f3fe254e5665f3c5d6f54f086c2502035cb631a91341591b5a564203cffb"
|
||||
],
|
||||
"version": "==0.1.1"
|
||||
},
|
||||
"pathtools": {
|
||||
"hashes": [
|
||||
"sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0"
|
||||
],
|
||||
"version": "==0.1.2"
|
||||
},
|
||||
"pbkdf2": {
|
||||
"hashes": [
|
||||
"sha256:ac6397369f128212c43064a2b4878038dab78dab41875364554aaf2a684e6979"
|
||||
],
|
||||
"version": "==1.3"
|
||||
},
|
||||
"pdbpp": {
|
||||
"hashes": [
|
||||
"sha256:dde77326e4ea41439c243ed065826d53539530eeabd1b6615aae15cfbb9fda05"
|
||||
],
|
||||
"version": "==0.9.2"
|
||||
},
|
||||
"pexpect": {
|
||||
"hashes": [
|
||||
"sha256:144939a072a46d32f6e5ecc866509e1d613276781f7182148a08df52eaa7b022",
|
||||
"sha256:8e287b171dbaf249d0b06b5f2e88cb7e694651d2d0b8c15bccb83170d3c55575"
|
||||
],
|
||||
"markers": "sys_platform != 'win32'",
|
||||
"version": "==4.3.1"
|
||||
},
|
||||
"pickleshare": {
|
||||
"hashes": [
|
||||
"sha256:c9a2541f25aeabc070f12f452e1f2a8eae2abd51e1cd19e8430402bdf4c1d8b5",
|
||||
"sha256:84a9257227dfdd6fe1b4be1319096c20eb85ff1e82c7932f36efccfe1b09737b"
|
||||
],
|
||||
"version": "==0.7.4"
|
||||
},
|
||||
"pluggy": {
|
||||
"hashes": [
|
||||
"sha256:7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff"
|
||||
],
|
||||
"version": "==0.6.0"
|
||||
},
|
||||
"populus": {
|
||||
"hashes": [
|
||||
"sha256:47415587f6ae5112c07959618ac03f7ff51c552bccf485c0d42652b62e7a8605",
|
||||
"sha256:06d01f1e37407f6273a2abb074916351e567e7bab906fdb2996207a840123c13",
|
||||
"sha256:2999a0078bd140e84b2008f491e6fa703c63845ddb626e67b8698abab7d2ba8f"
|
||||
],
|
||||
"version": "==2.2.0"
|
||||
},
|
||||
"prompt-toolkit": {
|
||||
"hashes": [
|
||||
"sha256:3f473ae040ddaa52b52f97f6b4a493cfa9f5920c255a12dc56a7d34397a398a4",
|
||||
"sha256:1df952620eccb399c53ebb359cc7d9a8d3a9538cb34c5a1344bdbeb29fbcc381",
|
||||
"sha256:858588f1983ca497f1cf4ffde01d978a3ea02b01c8a26a8bbc5cd2e66d816917"
|
||||
],
|
||||
"version": "==1.0.15"
|
||||
},
|
||||
"ptyprocess": {
|
||||
"hashes": [
|
||||
"sha256:e8c43b5eee76b2083a9badde89fd1bbce6c8942d1045146e100b7b5e014f4f1a",
|
||||
"sha256:e64193f0047ad603b71f202332ab5527c5e52aa7c8b609704fc28c0dc20c4365"
|
||||
],
|
||||
"version": "==0.5.2"
|
||||
},
|
||||
"py": {
|
||||
"hashes": [
|
||||
"sha256:8cca5c229d225f8c1e3085be4fcf306090b00850fefad892f9d96c7b6e2f310f",
|
||||
"sha256:ca18943e28235417756316bfada6cd96b23ce60dd532642690dcfdaba988a76d"
|
||||
],
|
||||
"version": "==1.5.2"
|
||||
},
|
||||
"py-geth": {
|
||||
"hashes": [
|
||||
"sha256:bc31bd18ad752cfe48f7e13ab90b0fb4eb323a2afa7c5e6ec9e5eeb5612e1ae9",
|
||||
"sha256:5f8fdcdd32cd7730e33f94a81cda8e80acb93acb03f1b3184256f46d382b54e7",
|
||||
"sha256:55bc267bbcb0279550779544ce95ebc1d86d97458710d835966d13e78ac8da3e"
|
||||
],
|
||||
"version": "==2.0.0"
|
||||
},
|
||||
"py-solc": {
|
||||
"hashes": [
|
||||
"sha256:90b7308abe35825979a1a03294bc383b5282bebdf9db1dda58223142dc7e9955",
|
||||
"sha256:0e657cc639b91649084901c00f0b14b921d40ab1b2faed0fb1216e80999bda72"
|
||||
],
|
||||
"version": "==2.1.0"
|
||||
},
|
||||
"pycparser": {
|
||||
"hashes": [
|
||||
"sha256:99a8ca03e29851d96616ad0404b4aad7d9ee16f25c9f9708a11faf2810f7b226"
|
||||
],
|
||||
"version": "==2.18"
|
||||
},
|
||||
"pycryptodome": {
|
||||
"hashes": [
|
||||
"sha256:ece04e5f9db1346e09bb16939d94297cd7b82922660715d8e695ef49be954ead",
|
||||
"sha256:663e2c4bb55aa1ce4d9da947047a858201b48b867ecf68b0d4b6df4a7ca395d1",
|
||||
"sha256:9fbca70f31da80834435da3383ab3655c410a582eaea372a90bd001a077d08a9",
|
||||
"sha256:e089d8619a46212cc191258292a3ffbe0d44b9e5ca21f036a4ca8f2db6b0860a",
|
||||
"sha256:24153e840ccaf9810804b657cf16b85e388520a1204d5efa55f1cc9c2c2601b9",
|
||||
"sha256:1c89fa30b343a0e93b97db06b23e1b21b3059b1d5b7d799ce22b70bc2feb1102",
|
||||
"sha256:33ea6954a2fcb02e7a377e7e5a5a9fd0ecbe4e5ea7694bcc9288f4414470db69",
|
||||
"sha256:66bc74812d825655c330a9d0c564493a9c001c30e8e1cef9037ec925f03d6e9e",
|
||||
"sha256:b3867e75287e2e76fa982a32e15d1342367217093b4048c155761be2715ec817",
|
||||
"sha256:18ce54f358e0405e963544585bc7ba5d8ce414212410c15a95a470aee8c38d4d",
|
||||
"sha256:61f983f10d2e21e3f5e424fac5aab4ef5e6b68f759bd3b83fe8c839c7d1a9d09",
|
||||
"sha256:ddd21b4dcd6b2102ee0c1edf7840b0d0914a7fbe827cc5bca2e82ed77a1430e6",
|
||||
"sha256:f0c59f974fbc9e97c7412a6acb652214a1d8ff19b5fa5c1ba4df4e889c0a8a92",
|
||||
"sha256:163ab58febfa9570082106153c48d8fdc58d3249efdcbec0e04140448528bed7",
|
||||
"sha256:c48734d77c95439ded9ebb96d05b7b1a829af8905dc58e60b5da059e9cbb338b",
|
||||
"sha256:60de23a82b49fd1fcff57cab04b205e31efe8c1efaa505a05120e86edec2a9ee",
|
||||
"sha256:08397452b817621f8e1740f08c7b13685226da0085267772547b4ac5f53c9bc2",
|
||||
"sha256:ba2e51987e71edd52f1e3afc82569544e1d9c885a18a1f35ca1b000aa2951ed8",
|
||||
"sha256:fd4f82f4fbbaf401ca1080b22eb2d1f3f77259b9da1d4e46d312c9e9cb18766c",
|
||||
"sha256:2c1ca8e134dc812555400e0a993cd4b9c858c968e6819522ae69d7b0ad6437a7",
|
||||
"sha256:fc1956aa27a14437bcd7f58a9c5ac6d8d5731f9d136312138b2f48ba8039ada1",
|
||||
"sha256:d2e2ea8fc409656f945422b3b732ff12961308276d3773fe4d10d4c496a712d0",
|
||||
"sha256:ede7f1f44b0895feb8ddbf882d1a7eb504deb3fa34fcc4860d6065c25cbdf175"
|
||||
],
|
||||
"version": "==3.4.8"
|
||||
},
|
||||
"pyethash": {
|
||||
"hashes": [
|
||||
"sha256:ff66319ce26b9d77df1f610942634dac9742e216f2c27b051c0a2c2dec9c2818"
|
||||
],
|
||||
"version": "==0.1.27"
|
||||
},
|
||||
"pygments": {
|
||||
"hashes": [
|
||||
"sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d",
|
||||
"sha256:dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc"
|
||||
],
|
||||
"version": "==2.2.0"
|
||||
},
|
||||
"pylru": {
|
||||
"hashes": [
|
||||
"sha256:71376192671f0ad1690b2a7427d39a29b1df994c8469a9b46b03ed7e28c0172c"
|
||||
],
|
||||
"version": "==1.0.9"
|
||||
},
|
||||
"pysha3": {
|
||||
"hashes": [
|
||||
"sha256:6e6a84efb7856f5d760ee55cd2b446972cb7b835676065f6c4f694913ea8f8d9",
|
||||
"sha256:f9046d59b3e72aa84f6dae83a040bd1184ebd7fef4e822d38186a8158c89e3cf",
|
||||
"sha256:68c3a60a39f9179b263d29e221c1bd6e01353178b14323c39cc70593c30f21c5",
|
||||
"sha256:59111c08b8f34495575d12e5f2ce3bafb98bea470bc81e70c8b6df99aef0dd2f",
|
||||
"sha256:9fdd28884c5d0b4edfed269b12badfa07f1c89dbc5c9c66dd279833894a9896b",
|
||||
"sha256:41be70b06c8775a9e4d4eeb52f2f6a3f356f17539a54eac61f43a29e42fd453d",
|
||||
"sha256:571a246308a7b63f15f5aa9651f99cf30f2a6acba18eddf28f1510935968b603",
|
||||
"sha256:93abd775dac570cb9951c4e423bcb2bc6303a9d1dc0dc2b7afa2dd401d195b24",
|
||||
"sha256:11a2ba7a2e1d9669d0052fc8fb30f5661caed5512586ecbeeaf6bf9478ab5c48",
|
||||
"sha256:5ec8da7c5c70a53b5fa99094af3ba8d343955b212bc346a0d25f6ff75853999f",
|
||||
"sha256:9c778fa8b161dc9348dc5cc361e94d54aa5ff18413788f4641f6600d4893a608",
|
||||
"sha256:fd7e66999060d079e9c0e8893e78d8017dad4f59721f6fe0be6307cd32127a07",
|
||||
"sha256:827b308dc025efe9b6b7bae36c2e09ed0118a81f792d888548188e97b9bf9a3d",
|
||||
"sha256:4416f16b0f1605c25f627966f76873e432971824778b369bd9ce1bb63d6566d9",
|
||||
"sha256:c93a2676e6588abcfaecb73eb14485c81c63b94fca2000a811a7b4fb5937b8e8",
|
||||
"sha256:684cb01d87ed6ff466c135f1c83e7e4042d0fc668fa20619f581e6add1d38d77",
|
||||
"sha256:386998ee83e313b6911327174e088021f9f2061cbfa1651b97629b761e9ef5c4",
|
||||
"sha256:c7c2adcc43836223680ebdf91f1d3373543dc32747c182c8ca2e02d1b69ce030",
|
||||
"sha256:cd5c961b603bd2e6c2b5ef9976f3238a561c58569945d4165efb9b9383b050ef",
|
||||
"sha256:0060a66be16665d90c432f55a0ba1f6480590cfb7d2ad389e688a399183474f0",
|
||||
"sha256:fe988e73f2ce6d947220624f04d467faf05f1bbdbc64b0a201296bb3af92739e"
|
||||
],
|
||||
"version": "==1.0.2"
|
||||
},
|
||||
"pytest": {
|
||||
"hashes": [
|
||||
"sha256:95fa025cd6deb5d937e04e368a00552332b58cae23f63b76c8c540ff1733ab6d",
|
||||
"sha256:6074ea3b9c999bd6d0df5fa9d12dd95ccd23550df2a582f5f5b848331d2e82ca"
|
||||
],
|
||||
"version": "==3.4.0"
|
||||
},
|
||||
"pyyaml": {
|
||||
"hashes": [
|
||||
"sha256:3262c96a1ca437e7e4763e2843746588a965426550f3797a79fca9c6199c431f",
|
||||
"sha256:16b20e970597e051997d90dc2cddc713a2876c47e3d92d59ee198700c5427736",
|
||||
"sha256:e863072cdf4c72eebf179342c94e6989c67185842d9997960b3e69290b2fa269",
|
||||
"sha256:bc6bced57f826ca7cb5125a10b23fd0f2fff3b7c4701d64c439a300ce665fff8",
|
||||
"sha256:c01b880ec30b5a6e6aa67b09a2fe3fb30473008c85cd6a67359a1b15ed6d83a4",
|
||||
"sha256:827dc04b8fa7d07c44de11fabbc888e627fa8293b695e0f99cb544fdfa1bf0d1",
|
||||
"sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab",
|
||||
"sha256:5f84523c076ad14ff5e6c037fe1c89a7f73a3e04cf0377cb4d017014976433f3",
|
||||
"sha256:0c507b7f74b3d2dd4d1322ec8a94794927305ab4cebbe89cc47fe5e81541e6e8",
|
||||
"sha256:b4c423ab23291d3945ac61346feeb9a0dc4184999ede5e7c43e1ffb975130ae6",
|
||||
"sha256:ca233c64c6e40eaa6c66ef97058cdc80e8d0157a443655baa1b2966e812807ca",
|
||||
"sha256:4474f8ea030b5127225b8894d626bb66c01cda098d47a2b0d3429b6700af9fd8",
|
||||
"sha256:326420cbb492172dec84b0f65c80942de6cedb5233c413dd824483989c000608",
|
||||
"sha256:5ac82e411044fb129bae5cfbeb3ba626acb2af31a8d17d175004b70862a741a7"
|
||||
],
|
||||
"version": "==3.12"
|
||||
},
|
||||
"repoze.lru": {
|
||||
"hashes": [
|
||||
"sha256:f77bf0e1096ea445beadd35f3479c5cff2aa1efe604a133e67150bc8630a62ea",
|
||||
"sha256:0429a75e19380e4ed50c0694e26ac8819b4ea7851ee1fc7583c8572db80aff77"
|
||||
],
|
||||
"version": "==0.7"
|
||||
},
|
||||
"requests": {
|
||||
"hashes": [
|
||||
"sha256:6a1b267aa90cac58ac3a765d067950e7dbbf75b1da07e895d1f594193a40a38b",
|
||||
"sha256:9c443e7324ba5b85070c4a818ade28bfabedf16ea10206da1132edaa6dda237e"
|
||||
],
|
||||
"version": "==2.18.4"
|
||||
},
|
||||
"rlp": {
|
||||
"hashes": [
|
||||
"sha256:87879a0ba1479b760cee98af165de2eee95258b261faa293199f60742be96f34"
|
||||
],
|
||||
"version": "==0.6.0"
|
||||
},
|
||||
"scrypt": {
|
||||
"hashes": [
|
||||
"sha256:dc9abe69799ca423b938a06ddc33e5873e493ffcd68dbb9ba48396979b210d39",
|
||||
"sha256:4e3cd639cc83e3f2c2241a01ebef9487c48b1ddf2d78f430d82d8f9ef60c6271",
|
||||
"sha256:ae2fd88756fb4d98ccc5e2639af55eeb80863b3f9f6e0f539e5ce050964cdd5e",
|
||||
"sha256:60e8c96a287ab892d9c7e1523d157ccfbdbe66da0c31738c8ed5732c2eea6a23",
|
||||
"sha256:c0f90cabb8f6eaec05de5ce9aa9a9b67dc63d644e6b803beb1c43ae9b9452b65",
|
||||
"sha256:c37a1f8440d7c621d9f23f3c1f2a28848bc50fefbca581fd7a1b01583a083c07",
|
||||
"sha256:3422d11652cd12550540675e9fb54a1de6d60f3cbfedfb067284ef028589e2ee",
|
||||
"sha256:d4a5a4f53450b8ef629bbf1ee4be6105c69936e49b3d8bc621ac2287f0c86020",
|
||||
"sha256:6109a4df8c88f851df18a1a451e533dcc47e17cfe0e4561f4e08a82669ddc942",
|
||||
"sha256:136f7d1caf596c5ee1fc7eab223605e956c3f61f77090fd9ea4e3e57a2040b78",
|
||||
"sha256:c8909a2089fd1199781aa7ce2cb66b8866d40a9f9e1fba082e067ed9524d87e9",
|
||||
"sha256:4333b67f190e5eaddc8800aefe33abd7e81b589bbe84a84be66872a4955dad6e",
|
||||
"sha256:aeab005a8ae43a6e5d0165ce433a15955b151045d2bbfc52a8c96f100f825323",
|
||||
"sha256:bb141584fa0ebdfb8a2a1fc7ddcf119ee18b1b9cd0fb3e4df9615760648b9d49"
|
||||
],
|
||||
"version": "==0.8.0"
|
||||
},
|
||||
"secp256k1": {
|
||||
"hashes": [
|
||||
"sha256:a755c85947b70c69cf318412bfd12889863e70ddf76b588701835a4da5322d55",
|
||||
"sha256:a598f2223ed3bf55bb7e317c5ebd1a316b3b4d65db26de32554bb84adf026eae",
|
||||
"sha256:2ad20bb8553425be795ecaf6641a510470701fa6a7aa9c54395d3989c070ab4c",
|
||||
"sha256:e9842fdc3b24c3174f49794d93b10b2013aa7b5d7029d12989458482c95ee56a",
|
||||
"sha256:5cded8e5d241dd92f6e55fd7462ff74e4edcbe97850b7bf4378cc56e48e446d7",
|
||||
"sha256:e86eab58d0c2e93c08483c8a8546fe54ade8150ff4a1f320417d647635cb133b",
|
||||
"sha256:29521dda0f3ad51afc26141d9a564b40bb39e84d27046164c502774b22ea2f9c",
|
||||
"sha256:df29091e6ac74bb0683a44d57411bd59c6c99d04d79ef4e396e4a67d91f6bd65",
|
||||
"sha256:a3b43e02d321c09eafa769a6fc2c156f555cab3a7db62175ef2fd21e16cdf20c"
|
||||
],
|
||||
"version": "==0.13.2"
|
||||
},
|
||||
"semantic-version": {
|
||||
"hashes": [
|
||||
"sha256:2d06ab7372034bcb8b54f2205370f4aa0643c133b7e6dbd129c5200b83ab394b",
|
||||
"sha256:2a4328680073e9b243667b201119772aefc5fc63ae32398d6afafff07c4f54c0"
|
||||
],
|
||||
"version": "==2.6.0"
|
||||
},
|
||||
"simplegeneric": {
|
||||
"hashes": [
|
||||
"sha256:dc972e06094b9af5b855b3df4a646395e43d1c9d0d39ed345b7393560d0b9173"
|
||||
],
|
||||
"version": "==0.8.1"
|
||||
},
|
||||
"six": {
|
||||
"hashes": [
|
||||
"sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb",
|
||||
"sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
|
||||
],
|
||||
"version": "==1.11.0"
|
||||
},
|
||||
"toolz": {
|
||||
"hashes": [
|
||||
"sha256:929f0a7ea7f61c178bd951bdae93920515d3fbdbafc8e6caf82d752b9b3b31c9"
|
||||
],
|
||||
"version": "==0.9.0"
|
||||
},
|
||||
"toposort": {
|
||||
"hashes": [
|
||||
"sha256:d80128b83b411d503b0cdb4a8f172998bc1d3b434b6402a349b8ebd734d51a80",
|
||||
"sha256:dba5ae845296e3bf37b042c640870ffebcdeb8cd4df45adaa01d8c5476c557dd"
|
||||
],
|
||||
"version": "==1.5"
|
||||
},
|
||||
"traitlets": {
|
||||
"hashes": [
|
||||
"sha256:c6cb5e6f57c5a9bdaa40fa71ce7b4af30298fbab9ece9815b5d995ab6217c7d9",
|
||||
"sha256:9c4bd2d267b7153df9152698efb1050a5d84982d3384a37b2c1f7723ba3e7835"
|
||||
],
|
||||
"version": "==4.3.2"
|
||||
},
|
||||
"urllib3": {
|
||||
"hashes": [
|
||||
"sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
|
||||
"sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f"
|
||||
],
|
||||
"version": "==1.22"
|
||||
},
|
||||
"watchdog": {
|
||||
"hashes": [
|
||||
"sha256:7e65882adb7746039b6f3876ee174952f8eaaa34491ba34333ddf1fe35de4162"
|
||||
],
|
||||
"version": "==0.8.3"
|
||||
},
|
||||
"wcwidth": {
|
||||
"hashes": [
|
||||
"sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c",
|
||||
"sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e"
|
||||
],
|
||||
"version": "==0.1.7"
|
||||
},
|
||||
"web3": {
|
||||
"hashes": [
|
||||
"sha256:d0ff8398c550618f34dd3cb2c5b6bcaf1b7e85ea0d7feb9c828556410fe25bfa",
|
||||
"sha256:b2cff16b7f950acb3c982c0d96e590edb37cd82e2d01d3cb4bed9c0effb7a2e9"
|
||||
],
|
||||
"version": "==3.16.4"
|
||||
},
|
||||
"werkzeug": {
|
||||
"hashes": [
|
||||
"sha256:d5da73735293558eb1651ee2fddc4d0dedcfa06538b8813a2e20011583c9e49b",
|
||||
"sha256:c3fd7a7d41976d9f44db327260e263132466836cef6f91512889ed60ad26557c"
|
||||
],
|
||||
"version": "==0.14.1"
|
||||
},
|
||||
"wmctrl": {
|
||||
"hashes": [
|
||||
"sha256:d806f65ac1554366b6e31d29d7be2e8893996c0acbb2824bbf2b1f49cf628a13"
|
||||
],
|
||||
"version": "==0.3"
|
||||
}
|
||||
},
|
||||
"develop": {
|
||||
"attrs": {
|
||||
"hashes": [
|
||||
"sha256:a17a9573a6f475c99b551c0e0a812707ddda1ec9653bed04c13841404ed6f450",
|
||||
"sha256:1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9"
|
||||
],
|
||||
"version": "==17.4.0"
|
||||
},
|
||||
"fancycompleter": {
|
||||
"hashes": [
|
||||
"sha256:d2522f1f3512371f295379c4c0d1962de06762eb586c199620a2a5d423539b12"
|
||||
],
|
||||
"version": "==0.8"
|
||||
},
|
||||
"pdbpp": {
|
||||
"hashes": [
|
||||
"sha256:dde77326e4ea41439c243ed065826d53539530eeabd1b6615aae15cfbb9fda05"
|
||||
],
|
||||
"version": "==0.9.2"
|
||||
},
|
||||
"pluggy": {
|
||||
"hashes": [
|
||||
"sha256:7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff"
|
||||
],
|
||||
"version": "==0.6.0"
|
||||
},
|
||||
"py": {
|
||||
"hashes": [
|
||||
"sha256:8cca5c229d225f8c1e3085be4fcf306090b00850fefad892f9d96c7b6e2f310f",
|
||||
"sha256:ca18943e28235417756316bfada6cd96b23ce60dd532642690dcfdaba988a76d"
|
||||
],
|
||||
"version": "==1.5.2"
|
||||
},
|
||||
"pygments": {
|
||||
"hashes": [
|
||||
"sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d",
|
||||
"sha256:dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc"
|
||||
],
|
||||
"version": "==2.2.0"
|
||||
},
|
||||
"pytest": {
|
||||
"hashes": [
|
||||
"sha256:95fa025cd6deb5d937e04e368a00552332b58cae23f63b76c8c540ff1733ab6d",
|
||||
"sha256:6074ea3b9c999bd6d0df5fa9d12dd95ccd23550df2a582f5f5b848331d2e82ca"
|
||||
],
|
||||
"version": "==3.4.0"
|
||||
},
|
||||
"six": {
|
||||
"hashes": [
|
||||
"sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb",
|
||||
"sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
|
||||
],
|
||||
"version": "==1.11.0"
|
||||
},
|
||||
"wmctrl": {
|
||||
"hashes": [
|
||||
"sha256:d806f65ac1554366b6e31d29d7be2e8893996c0acbb2824bbf2b1f49cf628a13"
|
||||
],
|
||||
"version": "==0.3"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,17 +1,18 @@
|
|||
# NuCypher KMS Ethereum
|
||||
|
||||
Ethereum (solidity) code for nucypher-kms, consists contracts and python classes for miners and clients.
|
||||
Part of contracts was copied from [OpenZeppelin](https://github.com/OpenZeppelin/zeppelin-solidity) repo.
|
||||
The basis is built on the [Populus](https://github.com/ethereum/populus) framework.
|
||||
|
||||
# Install
|
||||
TBD
|
||||
|
||||
# Periods structure
|
||||
Most of the function in contracts works by periods. For example, stake in the contract `Escrow` is discretely unlocked by periods.
|
||||
|
||||
Most of the function in contracts works by periods. For example, stake in the contract `Escrow` is discretely unlocked by periods.
|
||||
Period is calculating using block.timestamp in getCurrentPeriod() function (`Miner.sol`). Each period is 24 hours. So result of getting locked tokens in one day will be the same.
|
||||
|
||||
# Main contracts
|
||||
* Token contract
|
||||
|
||||
* Token contract
|
||||
`NuCypherKMSToken` contract is ERC20 token with additional function - burn own tokens (only for owners)
|
||||
* Miner contract
|
||||
`MinersEscrow` contract holds stake from miners, store information about miners activity and assigns a reward for participating in NuCypher KMS network
|
||||
|
@ -20,9 +21,7 @@ Period is calculating using block.timestamp in getCurrentPeriod() function (`Min
|
|||
* User escrow contract
|
||||
`UserEscrow` contract locks tokens for some time. In that period tokens are lineraly unlocked and all tokens can be used as stake in `MinersEscrow` contract
|
||||
|
||||
# Python client
|
||||
TBD
|
||||
|
||||
# Solidity libraries
|
||||
|
||||
* `LinkedList` library is structure of linked list for address data type
|
||||
* `Dispatcher` contract is proxy which used for updating versions of any contract. See [README.MD](nkms_eth/project/contracts/proxy/README.MD)
|
||||
* `Dispatcher` contract is proxy which used for updating versions of any contract. See [README.MD](nkms.blockchain.eth/project/contracts/proxy/README.MD)
|
||||
|
|
|
@ -3,7 +3,7 @@ from collections import OrderedDict
|
|||
from datetime import datetime
|
||||
from typing import Tuple, List, Union
|
||||
|
||||
from nkms_eth.agents import NuCypherKMSTokenAgent
|
||||
from nkms.blockchain.eth.agents import NuCypherKMSTokenAgent
|
||||
|
||||
|
||||
class TokenActor(ABC):
|
|
@ -7,7 +7,7 @@ from typing import Set, Generator, List
|
|||
|
||||
from web3.contract import Contract
|
||||
|
||||
from nkms_eth.deployers import MinerEscrowDeployer, NuCypherKMSTokenDeployer, PolicyManagerDeployer, ContractDeployer
|
||||
from nkms.blockchain.eth.deployers import MinerEscrowDeployer, NuCypherKMSTokenDeployer, PolicyManagerDeployer, ContractDeployer
|
||||
|
||||
|
||||
class EthereumContractAgent(ABC):
|
|
@ -1,6 +1,6 @@
|
|||
from abc import ABC
|
||||
|
||||
from nkms_eth.config import EthereumConfig
|
||||
from nkms.config.configs import EthereumConfig
|
||||
|
||||
|
||||
class TheBlockchain(ABC):
|
|
@ -1,15 +1,3 @@
|
|||
import os
|
||||
from enum import Enum
|
||||
from pathlib import Path
|
||||
|
||||
from os.path import dirname, join, abspath
|
||||
|
||||
import appdirs
|
||||
import populus
|
||||
|
||||
import nkms_eth
|
||||
|
||||
|
||||
class NuCypherTokenConfig:
|
||||
__subdigits = 18
|
||||
_M = 10 ** __subdigits
|
||||
|
@ -54,26 +42,3 @@ class NuCypherMinerConfig:
|
|||
@property
|
||||
def reward(self):
|
||||
return self.__reward
|
||||
|
||||
|
||||
class EthereumConfig:
|
||||
__python_project_name = 'nucypher-kms'
|
||||
# __default_solidity_dir = os.path.join() # TODO: NKMSConfig Classes
|
||||
|
||||
def __init__(self, provider, registrar_path=None):
|
||||
|
||||
self.provider = provider
|
||||
|
||||
# This config is persistent and is created in user's .local directory
|
||||
if registrar_path is None:
|
||||
registrar_path = join(appdirs.user_data_dir(self.__python_project_name), 'registrar.json')
|
||||
self._registrar_path = registrar_path
|
||||
|
||||
# Populus project config
|
||||
self._project_dir = join(dirname(abspath(nkms_eth.__file__)), 'project')
|
||||
self._populus_project = populus.Project(self._project_dir)
|
||||
self.project.config['chains.mainnetrpc.contracts.backends.JSONFile.settings.file_path'] = self._registrar_path
|
||||
|
||||
@property
|
||||
def project(self):
|
||||
return self._populus_project
|
|
@ -1,9 +1,8 @@
|
|||
from typing import Tuple, Dict
|
||||
|
||||
from populus.contracts.contract import PopulusContract
|
||||
from nkms.blockchain.eth.constants import NuCypherMinerConfig, NuCypherTokenConfig
|
||||
from web3.contract import Contract
|
||||
|
||||
from nkms_eth.config import NuCypherMinerConfig, NuCypherTokenConfig
|
||||
from .blockchain import TheBlockchain
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
from nkms_eth.actors import Miner
|
||||
from nkms.blockchain.eth.actors import Miner
|
||||
|
||||
|
||||
class BlockchainArrangement:
|
|
@ -6,7 +6,7 @@ A simple Python script to deploy contracts and then estimate gas for different m
|
|||
"""
|
||||
|
||||
|
||||
from nkms_eth.agents import NuCypherKMSTokenAgent, MinerAgent
|
||||
from nkms.blockchain.eth.agents import NuCypherKMSTokenAgent, MinerAgent
|
||||
import os
|
||||
|
||||
from tests.utilities import TesterBlockchain
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
virtualenv -p python3 .venv
|
||||
source .venv/bin/activate
|
||||
pip3 install -r requirements.txt
|
||||
wget https://github.com/ethereum/solidity/releases/download/v0.4.20/solc-static-linux -O .venv/bin/solc
|
||||
chmod +x .venv/bin/solc
|
||||
pip3 install -e .
|
|
@ -5,7 +5,7 @@
|
|||
A simple Python script to deploy contracts and then estimate gas for different methods.
|
||||
"""
|
||||
import random
|
||||
from nkms_eth.blockchain import project
|
||||
from nkms.blockchain.eth.blockchain import project
|
||||
|
||||
TIMEOUT = 10
|
||||
MINING_COEFF = [10 ** 5, 10 ** 7]
|
||||
|
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
@ -126,7 +126,7 @@
|
|||
"../../tests/contracts"
|
||||
],
|
||||
"import_remappings": [
|
||||
"contracts=nkms_eth/project/contracts"
|
||||
"contracts=nkms/blockchain/eth/sol_source/contracts"
|
||||
],
|
||||
"backend": {
|
||||
"settings": {
|
|
@ -1,11 +1,11 @@
|
|||
import random
|
||||
from typing import List
|
||||
|
||||
from nkms_eth.actors import Miner
|
||||
from nkms_eth.agents import MinerAgent, EthereumContractAgent
|
||||
from nkms_eth.blockchain import TheBlockchain
|
||||
from nkms_eth.config import NuCypherMinerConfig
|
||||
from nkms_eth.deployers import MinerEscrowDeployer, NuCypherKMSTokenDeployer
|
||||
from nkms.blockchain.eth.actors import Miner
|
||||
from nkms.blockchain.eth.agents import MinerAgent
|
||||
from nkms.blockchain.eth.blockchain import TheBlockchain
|
||||
from nkms.blockchain.eth.constants import NuCypherMinerConfig
|
||||
from nkms.blockchain.eth.deployers import MinerEscrowDeployer, NuCypherKMSTokenDeployer
|
||||
|
||||
|
||||
class TesterBlockchain(TheBlockchain):
|
|
@ -1,17 +0,0 @@
|
|||
from setuptools import setup, find_packages
|
||||
|
||||
version = '0.1'
|
||||
|
||||
|
||||
setup(
|
||||
name="nkms_eth",
|
||||
version=version,
|
||||
package_data={'nkms_eth': [
|
||||
'project/*', 'project/contracts/*',
|
||||
'project/contracts/lib/*',
|
||||
'project/contracts/zepellin/math/*',
|
||||
'project/contracts/zepellin/ownership/*',
|
||||
'project/contracts/zepellin/token/*']},
|
||||
include_package_data=True,
|
||||
zip_safe=False,
|
||||
)
|
|
@ -22,7 +22,7 @@ from nkms.network import blockchain_client
|
|||
from nkms.network.protocols import dht_value_splitter
|
||||
from nkms.network.server import NuCypherDHTServer, NuCypherSeedOnlyDHTServer, ProxyRESTServer
|
||||
|
||||
from nkms_eth.actors import PolicyAuthor
|
||||
from nkms.blockchain.eth.actors import PolicyAuthor
|
||||
|
||||
from umbral import pre
|
||||
from umbral.keys import UmbralPublicKey
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
import json
|
||||
import os
|
||||
from abc import ABC
|
||||
from pathlib import Path
|
||||
|
||||
import maya
|
||||
from os.path import join, dirname, abspath
|
||||
|
||||
from nkms.blockchain import eth
|
||||
|
||||
_DEFAULT_CONFIGURATION_DIR = os.path.join(str(Path.home()), '.nucypher')
|
||||
|
||||
|
||||
|
@ -9,18 +15,66 @@ class KMSConfigurationError(RuntimeError):
|
|||
pass
|
||||
|
||||
|
||||
class BlockchainConfig(ABC):
|
||||
pass
|
||||
|
||||
|
||||
class EthereumConfig(BlockchainConfig):
|
||||
__solididty_source_dir = join(dirname(abspath(eth.__file__)), 'sol_source')
|
||||
__default_registrar_path = join(_DEFAULT_CONFIGURATION_DIR, 'registrar.json')
|
||||
|
||||
def __init__(self, provider, registrar_path=None):
|
||||
|
||||
self.provider = provider
|
||||
|
||||
if registrar_path is None:
|
||||
registrar_path = self.__default_registrar_path
|
||||
self._registrar_path = registrar_path
|
||||
|
||||
# Populus project config
|
||||
# self._populus_project = populus.Project(self._project_dir)
|
||||
# self.project.config['chains.mainnetrpc.contracts.backends.JSONFile.settings.file_path'] = self._registrar_path
|
||||
|
||||
# @property
|
||||
# def project(self):
|
||||
# return self._populus_project
|
||||
|
||||
|
||||
class StakeConfig:
|
||||
__minimum_stake_amount = 0 # TODO!!!
|
||||
__minimum_stake_duration = 0
|
||||
|
||||
def __init__(self, amount: int, periods: int, start_datetime):
|
||||
|
||||
assert StakeConfig.validate_stake(amount, periods, start_datetime)
|
||||
self.amount = amount
|
||||
self.periods = periods
|
||||
self.start = start_datetime
|
||||
self.periods = periods
|
||||
|
||||
@classmethod
|
||||
def validate_stake(cls, amount: int, periods: int, start_datetime) -> bool:
|
||||
rules = (
|
||||
(amount > cls.__minimum_stake_amount, 'Staking aount must be at least {min_amount}'),
|
||||
(start_datetime < maya.now(), 'Start date/time must not be in the past.'),
|
||||
(periods > cls.__minimum_stake_duration, 'Staking duration must be at least {}'.format(cls.__minimum_stake_duration))
|
||||
)
|
||||
|
||||
for rule, failure_message in rules:
|
||||
if rule is False:
|
||||
raise KMSConfigurationError(failure_message)
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
class PolicyConfig:
|
||||
__default_m = 6 # TODO!!!
|
||||
__default_n = 10
|
||||
__default_gas_limit = 500000
|
||||
|
||||
def __init__(self, default_m: int, default_n: int, gas_limit: int):
|
||||
self.prefered_m = default_m
|
||||
self.prefered_n = default_n
|
||||
self.transaction_gas_limit = gas_limit
|
||||
self.prefered_m = default_m or self.__default_m
|
||||
self.prefered_n = default_n or self.__default_n
|
||||
self.transaction_gas_limit = gas_limit or self.__default_gas_limit
|
||||
|
||||
|
||||
class NetworkConfig:
|
||||
|
@ -40,10 +94,6 @@ class NetworkConfig:
|
|||
|
||||
|
||||
class KMSConfig:
|
||||
|
||||
class KMSConfigurationError(RuntimeError):
|
||||
pass
|
||||
|
||||
__default_configuration_root = _DEFAULT_CONFIGURATION_DIR
|
||||
__default_json_config_filepath = os.path.join(__default_configuration_root, 'conf.json')
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ from web3.auto import w3
|
|||
|
||||
from nkms.config import utils
|
||||
from nkms.config.configs import _DEFAULT_CONFIGURATION_DIR, KMSConfigurationError
|
||||
from nkms.config.utils import _parse_keyfile, _save_private_keyfile
|
||||
from nkms.config.utils import parse_keyfile, save_private_keyfile
|
||||
from nkms.crypto.powers import SigningPower, EncryptingPower, CryptoPower
|
||||
|
||||
w3.eth.enable_unaudited_features()
|
||||
|
|
|
@ -2,11 +2,10 @@ import json
|
|||
import os
|
||||
import stat
|
||||
|
||||
from nkms.config.keys import KMSKeyring
|
||||
from .configs import _DEFAULT_CONFIGURATION_DIR, KMSConfigurationError
|
||||
|
||||
|
||||
def _save_private_keyfile(keypath: str, key_data: dict) -> str:
|
||||
def save_private_keyfile(keypath: str, key_data: dict) -> str:
|
||||
"""
|
||||
Creates a permissioned keyfile and save it to the local filesystem.
|
||||
The file must be created in this call, and will fail if the path exists.
|
||||
|
@ -42,7 +41,7 @@ def _save_private_keyfile(keypath: str, key_data: dict) -> str:
|
|||
return output_path
|
||||
|
||||
|
||||
def _parse_keyfile(keypath: str):
|
||||
def parse_keyfile(keypath: str):
|
||||
"""Parses a keyfile and returns key metadata as a dict."""
|
||||
|
||||
with open(keypath, 'r') as keyfile:
|
||||
|
|
|
@ -15,7 +15,7 @@ from nkms.crypto.powers import SigningPower
|
|||
from nkms.crypto.signature import Signature
|
||||
from nkms.crypto.splitters import key_splitter
|
||||
from bytestring_splitter import BytestringSplitter
|
||||
from nkms_eth.policies import BlockchainArrangement
|
||||
from nkms.blockchain.eth.policies import BlockchainArrangement
|
||||
from umbral.pre import Capsule
|
||||
from constant_sorrow import constants
|
||||
|
||||
|
|
16
setup.py
|
@ -1,5 +1,7 @@
|
|||
from setuptools import setup, find_packages
|
||||
|
||||
VERSION = '0.1'
|
||||
|
||||
INSTALL_REQUIRES = [
|
||||
'kademlia>=1.0',
|
||||
'rpcudp>=3.0',
|
||||
|
@ -22,12 +24,20 @@ TESTS_REQUIRE = [
|
|||
LINKS = [
|
||||
'https://github.com/nucypher/kademlia/archive/kms-dependency.tar.gz#egg=kademlia-1.0',
|
||||
'https://github.com/bmuller/rpcudp/archive/python3.5.tar.gz#egg=rpcudp-3.0.0',
|
||||
]
|
||||
]
|
||||
|
||||
setup(name='nkms',
|
||||
version='0.1',
|
||||
version=VERSION,
|
||||
description='NuCypher decentralized KMS',
|
||||
install_requires=INSTALL_REQUIRES,
|
||||
dependency_links=LINKS,
|
||||
extras_require={'testing': TESTS_REQUIRE},
|
||||
packages=find_packages())
|
||||
packages=find_packages(),
|
||||
package_data={'nkms': [
|
||||
'blockchain/eth/*', 'project/contracts/*',
|
||||
'blockchain/eth/sol_source/contracts/lib/*',
|
||||
'blockchain/eth/sol_source/contracts/zepellin/math/*',
|
||||
'blockchain/eth/sol_source/contracts/zepellin/ownership/*',
|
||||
'blockchain/eth/sol_source/contracts/zepellin/token/*']},
|
||||
include_package_data=True,
|
||||
)
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import pytest
|
||||
from eth_tester import EthereumTester
|
||||
from web3 import Web3
|
||||
from web3.providers.eth_tester import EthereumTesterProvider
|
||||
|
||||
from nkms_eth.agents import NuCypherKMSTokenAgent, MinerAgent, PolicyAgent
|
||||
from nkms_eth.blockchain import TheBlockchain
|
||||
from nkms_eth.config import EthereumConfig
|
||||
from nkms_eth.deployers import PolicyManagerDeployer
|
||||
from nkms_eth.utilities import TesterBlockchain, MockNuCypherKMSTokenDeployer, MockMinerEscrowDeployer, MockMinerAgent
|
||||
from eth_tester import EthereumTester
|
||||
from nkms.blockchain.eth.agents import NuCypherKMSTokenAgent, MinerAgent, PolicyAgent
|
||||
from nkms.blockchain.eth.blockchain import TheBlockchain
|
||||
from nkms.blockchain.eth.deployers import PolicyManagerDeployer
|
||||
from nkms.blockchain.eth.utilities import TesterBlockchain, MockNuCypherKMSTokenDeployer, MockMinerEscrowDeployer
|
||||
from nkms.config.configs import EthereumConfig
|
||||
|
||||
|
||||
@pytest.fixture(scope='session')
|
|
@ -3,8 +3,8 @@ import random
|
|||
|
||||
import pytest
|
||||
|
||||
from nkms_eth.actors import Miner
|
||||
from nkms_eth.agents import MinerAgent
|
||||
from nkms.blockchain.eth.actors import Miner
|
||||
from nkms.blockchain.eth.agents import MinerAgent
|
||||
|
||||
|
||||
def test_miner_locking_tokens(testerchain, mock_token_deployer, mock_miner_agent):
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from nkms_eth.utilities import MockNuCypherMinerConfig
|
||||
from nkms.blockchain.eth.utilities import MockNuCypherMinerConfig
|
||||
|
||||
M = 10 ** 6
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
from populus.contracts.exceptions import NoKnownAddress
|
||||
from pytest import raises
|
||||
|
||||
from nkms_eth.agents import NuCypherKMSTokenAgent, MinerAgent
|
||||
from nkms_eth.deployers import NuCypherKMSTokenDeployer, MinerEscrowDeployer, PolicyManagerDeployer
|
||||
from nkms.blockchain.eth.agents import NuCypherKMSTokenAgent, MinerAgent
|
||||
from nkms.blockchain.eth.deployers import NuCypherKMSTokenDeployer, MinerEscrowDeployer, PolicyManagerDeployer
|
||||
|
||||
|
||||
def test_token_deployer_and_agent(testerchain):
|
|
@ -1,7 +1,5 @@
|
|||
from os.path import join, dirname, abspath
|
||||
|
||||
import nkms_eth
|
||||
from nkms_eth.deployers import NuCypherKMSTokenDeployer
|
||||
from nkms.blockchain.eth.deployers import NuCypherKMSTokenDeployer
|
||||
|
||||
|
||||
def test_testerchain_creation(testerchain):
|
||||
|
@ -14,7 +12,7 @@ def test_testerchain_creation(testerchain):
|
|||
|
||||
def test_nucypher_populus_project(testerchain):
|
||||
|
||||
populus_project_dir = join(dirname(abspath(nkms_eth.__file__)), 'project')
|
||||
populus_project_dir = join(dirname(abspath(nkms.blockchain.eth.__file__)), 'project')
|
||||
|
||||
# Check that populus paths are set...
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
import pytest
|
||||
|
||||
from nkms_eth import utilities as utils
|
||||
from nkms_eth.blockchain import TheBlockchain
|
||||
from nkms_eth.agents import NuCypherKMSTokenAgent, MinerAgent
|
||||
from nkms.blockchain.eth import utilities as utils
|
||||
from nkms.blockchain.eth.blockchain import TheBlockchain
|
||||
from nkms.blockchain.eth.agents import NuCypherKMSTokenAgent, MinerAgent
|
||||
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
|
|
|
@ -11,7 +11,7 @@ from nkms.network import blockchain_client
|
|||
from nkms.network.protocols import dht_value_splitter
|
||||
|
||||
from tests.utilities import MockNetworkyStuff, EVENT_LOOP, URSULA_PORT, NUMBER_OF_URSULAS_IN_NETWORK
|
||||
from nkms_eth.utilities import spawn_miners
|
||||
from nkms.blockchain.eth.utilities import spawn_miners
|
||||
|
||||
|
||||
def test_all_ursulas_know_about_all_other_ursulas(ursulas):
|
||||
|
|