diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml new file mode 100644 index 000000000..f8f7bf7d8 --- /dev/null +++ b/.github/workflows/python.yml @@ -0,0 +1,33 @@ +--- + +name: Python + +"on": + pull_request: + branches: + - main + +jobs: + + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.7", "3.8", "3.9"] + steps: + - name: Check out code + uses: actions/checkout@v3 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + + - name: Lint with black + run: | + command -v black 1>/dev/null || pip install black + make blackcheck + - name: Test with pytest + run: | + command -v pipenv 1>/dev/null || pip install pipenv + make test diff --git a/.gitignore b/.gitignore index b6e47617d..43a10987f 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ share/python-wheels/ .installed.cfg *.egg MANIFEST +extern/* # PyInstaller # Usually these files are written by a python script from a template @@ -127,3 +128,8 @@ dmypy.json # Pyre type checker .pyre/ + + +.DS_Store +.vscode/* +vega_sim/bin/* \ No newline at end of file diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 000000000..7da96ed26 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +* @vegaprotocol/research \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..c38da6a1e --- /dev/null +++ b/Makefile @@ -0,0 +1,44 @@ +VEGA_TAG := tags/v0.49.6 +WALLET_TAG := tags/v0.13.1 +DATA_NODE_TAG := tags/v0.49.3 +EXTERN_DIR := "./extern" + +all: pull_deps build_deps + +pull_deps: + @mkdir -p ./extern/{vega,vegawallet,data-node} + @echo "Downloading Git dependencies into " ${EXTERN_DIR} + @echo "Downloading Vega" + @git clone https://github.com/vegaprotocol/vega ${EXTERN_DIR}/vega && git -C ${EXTERN_DIR}/vega checkout -b ${VEGA_TAG} + @echo "Downloading data-node" + @git clone https://github.com/vegaprotocol/data-node ${EXTERN_DIR}/data-node && git -C ${EXTERN_DIR}/data-node checkout -b ${DATA_NODE_TAG} + @echo "Downloading Vegawallet" + @git clone https://github.com/vegaprotocol/vegawallet ${EXTERN_DIR}/vegawallet && git -C ${EXTERN_DIR}/vegawallet checkout -b ${WALLET_TAG} + +build_deps: + @mkdir -p ./vega_sim/bin + cd ${EXTERN_DIR}/vega && go build -o ../../vega_sim/bin/ ./... + cd ${EXTERN_DIR}/vegawallet && go build -o ../../vega_sim/bin/ ./... + cd ${EXTERN_DIR}/data-node && go build -o ../../vega_sim/bin/ ./... + +.PHONY: black +black: + @black . + +.PHONY: blackcheck +blackcheck: + @black --check . + +.PHONY: clean +clean: + @rm -rf "$(GENERATED_DIR)" + +.PHONY: flake8 +flake8: + @flake8 + +.PHONY: test +test: + @pipenv --bare install --dev # 1>/dev/null 2>&1 + @pipenv run pip install -e . + @env PYTHONPATH=. pipenv run pytest tests/ diff --git a/Pipfile b/Pipfile new file mode 100644 index 000000000..a3663ab0d --- /dev/null +++ b/Pipfile @@ -0,0 +1,18 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +requests = "*" +vega-api-client = "*" +toml = "*" + +[dev-packages] +black = "*" +flake8 = "*" +pytest = "*" +requests-mock = "*" + +[requires] +python_version = "3" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 000000000..53ae4226b --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,391 @@ +{ + "_meta": { + "hash": { + "sha256": "f0a7e68b475d99f8826666b68e85fe38cfbd39498c6255af7ce85bd3734839d6" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.9" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "certifi": { + "hashes": [ + "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", + "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" + ], + "version": "==2021.10.8" + }, + "charset-normalizer": { + "hashes": [ + "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597", + "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df" + ], + "markers": "python_version >= '3'", + "version": "==2.0.12" + }, + "googleapis-common-protos": { + "hashes": [ + "sha256:4007500795bcfc269d279f0f7d253ae18d6dc1ff5d5a73613ffe452038b1ec5f", + "sha256:60220c89b8bd5272159bed4929ecdc1243ae1f73437883a499a44a1cbc084086" + ], + "markers": "python_version >= '3.6'", + "version": "==1.56.0" + }, + "grpcio": { + "hashes": [ + "sha256:05467acd391e3fffb05991c76cb2ed2fa1309d0e3815ac379764bc5670b4b5d4", + "sha256:0ac72d4b953b76924f8fa21436af060d7e6d8581e279863f30ee14f20751ac27", + "sha256:11f811c0fffd84fca747fbc742464575e5eb130fd4fb4d6012ccc34febd001db", + "sha256:13343e7b840c20f43b44f0e6d3bbdc037c964f0aec9735d7cb685c407731c9ff", + "sha256:14eefcf623890f3f7dd7831decd2a2116652b5ce1e0f1d4b464b8f52110743b0", + "sha256:19e54f0c7083c8332b5a75a9081fc5127f1dbb67b6c1a32bd7fe896ef0934918", + "sha256:36a7bdd6ef9bca050c7ade8cba5f0e743343ea0756d5d3d520e915098a9dc503", + "sha256:3d47553b8e86ab1e59b0185ba6491a187f94a0239f414c8fc867a22b0405b798", + "sha256:41036a574cab3468f24d41d6ed2b52588fb85ed60f8feaa925d7e424a250740b", + "sha256:4201c597e5057a9bfef9ea5777a6d83f6252cb78044db7d57d941ec2300734a5", + "sha256:46d4843192e7d36278884282e100b8f305cf37d1b3d8c6b4f736d4454640a069", + "sha256:4bae1c99896045d3062ab95478411c8d5a52cb84b91a1517312629fa6cfeb50e", + "sha256:4ee51964edfd0a1293a95bb0d72d134ecf889379d90d2612cbf663623ce832b4", + "sha256:4fcb53e4eb8c271032c91b8981df5fc1bb974bc73e306ec2c27da41bd95c44b5", + "sha256:5c30a9a7d3a05920368a60b080cbbeaf06335303be23ac244034c71c03a0fd24", + "sha256:5f3c54ebb5d9633a557335c01d88d3d4928e9b1b131692283b6184da1edbec0b", + "sha256:6641a28cc826a92ef717201cca9a035c34a0185e38b0c93f3ce5f01a01a1570a", + "sha256:790d7493337558ae168477d1be3178f4c9b8f91d8cd9b8b719d06fd9b2d48836", + "sha256:871078218fa9117e2a378678f327e32fda04e363ed6bc0477275444273255d4d", + "sha256:898c159148f27e23c08a337fb80d31ece6b76bb24f359d83929460d813665b74", + "sha256:89b390b1c0de909965280d175c53128ce2f0f4f5c0f011382243dd7f2f894060", + "sha256:8fa6584046a7cf281649975a363673fa5d9c6faf9dc923f261cc0e56713b5892", + "sha256:9075c0c003c1ff14ebce8f0ba55cc692158cb55c68da09cf8b0f9fc5b749e343", + "sha256:9a86a91201f8345502ea81dee0a55ae13add5fafadf109b17acd858fe8239651", + "sha256:a8d610b7b557a7609fecee80b6dd793ecb7a9a3c3497fbdce63ce7d151cdd705", + "sha256:b81dc7894062ed2d25b74a2725aaa0a6895ce97ce854f432fe4e87cad5a07316", + "sha256:b8d852329336c584c636caa9c2db990f3a332b19bc86a80f4646b58d27c142db", + "sha256:be857b7ec2ac43455156e6ba89262f7d7ae60227049427d01a3fecd218a3f88d", + "sha256:bebe90b8020b4248e5a2076b56154cc6ff45691bbbe980579fc9db26717ac968", + "sha256:bfd36b959c3c4e945119387baed1414ea46f7116886aa23de0172302b49d7ff1", + "sha256:c122dac5cb299b8ad7308d61bd9fe0413de13b0347cce465398436b3fdf1f609", + "sha256:c5c2f8417d13386e18ccc8c61467cb6a6f9667a1ff7000a2d7d378e5d7df693f", + "sha256:ccd388b8f37b19d06e4152189726ce309e36dc03b53f2216a4ea49f09a7438e6", + "sha256:cd61b52d9cf8fcf8d9628c0b640b9e44fdc5e93d989cc268086a858540ed370c", + "sha256:cf220199b7b4992729ad4d55d5d3f652f4ccfe1a35b5eacdbecf189c245e1859", + "sha256:d1e22d3a510438b7f3365c0071b810672d09febac6e8ca8a47eab657ae5f347b", + "sha256:d2ec124a986093e26420a5fb10fa3f02b2c232f924cdd7b844ddf7e846c020cd", + "sha256:dc3290d0411ddd2bd49adba5793223de8de8b01588d45e9376f1a9f7d25414f4", + "sha256:e2149077d71e060678130644670389ddf1491200bcea16c5560d4ccdc65e3f2e", + "sha256:e2de61005118ae59d48d5d749283ebfd1ba4ca68cc1000f8a395cd2bdcff7ceb", + "sha256:e50ddea6de76c09b656df4b5a55ae222e2a56e625c44250e501ff3c904113ec1", + "sha256:e898194f76212facbaeb6d7545debff29351afa23b53ff8f0834d66611af5139", + "sha256:f6a9cf0e77f72f2ac30c9c6e086bc7446c984c51bebc6c7f50fbcd718037edba", + "sha256:fdb0a3e0e64843441793923d9532a3a23907b07b2a1e0a7a31f186dc185bb772" + ], + "markers": "python_version >= '3.6'", + "version": "==1.44.0" + }, + "idna": { + "hashes": [ + "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", + "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" + ], + "markers": "python_version >= '3'", + "version": "==3.3" + }, + "protobuf": { + "hashes": [ + "sha256:072fbc78d705d3edc7ccac58a62c4c8e0cec856987da7df8aca86e647be4e35c", + "sha256:09297b7972da685ce269ec52af761743714996b4381c085205914c41fcab59fb", + "sha256:16f519de1313f1b7139ad70772e7db515b1420d208cb16c6d7858ea989fc64a9", + "sha256:1c91ef4110fdd2c590effb5dca8fdbdcb3bf563eece99287019c4204f53d81a4", + "sha256:3112b58aac3bac9c8be2b60a9daf6b558ca3f7681c130dcdd788ade7c9ffbdca", + "sha256:36cecbabbda242915529b8ff364f2263cd4de7c46bbe361418b5ed859677ba58", + "sha256:4276cdec4447bd5015453e41bdc0c0c1234eda08420b7c9a18b8d647add51e4b", + "sha256:435bb78b37fc386f9275a7035fe4fb1364484e38980d0dd91bc834a02c5ec909", + "sha256:48ed3877fa43e22bcacc852ca76d4775741f9709dd9575881a373bd3e85e54b2", + "sha256:54a1473077f3b616779ce31f477351a45b4fef8c9fd7892d6d87e287a38df368", + "sha256:69da7d39e39942bd52848438462674c463e23963a1fdaa84d88df7fbd7e749b2", + "sha256:6cbc312be5e71869d9d5ea25147cdf652a6781cf4d906497ca7690b7b9b5df13", + "sha256:7bb03bc2873a2842e5ebb4801f5c7ff1bfbdf426f85d0172f7644fcda0671ae0", + "sha256:7ca7da9c339ca8890d66958f5462beabd611eca6c958691a8fe6eccbd1eb0c6e", + "sha256:835a9c949dc193953c319603b2961c5c8f4327957fe23d914ca80d982665e8ee", + "sha256:84123274d982b9e248a143dadd1b9815049f4477dc783bf84efe6250eb4b836a", + "sha256:8961c3a78ebfcd000920c9060a262f082f29838682b1f7201889300c1fbe0616", + "sha256:96bd766831596d6014ca88d86dc8fe0fb2e428c0b02432fd9db3943202bf8c5e", + "sha256:9df0c10adf3e83015ced42a9a7bd64e13d06c4cf45c340d2c63020ea04499d0a", + "sha256:b38057450a0c566cbd04890a40edf916db890f2818e8682221611d78dc32ae26", + "sha256:bd95d1dfb9c4f4563e6093a9aa19d9c186bf98fa54da5252531cc0d3a07977e7", + "sha256:c1068287025f8ea025103e37d62ffd63fec8e9e636246b89c341aeda8a67c934", + "sha256:c438268eebb8cf039552897d78f402d734a404f1360592fef55297285f7f953f", + "sha256:cdc076c03381f5c1d9bb1abdcc5503d9ca8b53cf0a9d31a9f6754ec9e6c8af0f", + "sha256:f358aa33e03b7a84e0d91270a4d4d8f5df6921abe99a377828839e8ed0c04e07", + "sha256:f51d5a9f137f7a2cec2d326a74b6e3fc79d635d69ffe1b036d39fc7d75430d37" + ], + "markers": "python_version >= '3.5'", + "version": "==3.19.4" + }, + "requests": { + "hashes": [ + "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61", + "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d" + ], + "index": "pypi", + "version": "==2.27.1" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "toml": { + "hashes": [ + "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", + "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + ], + "index": "pypi", + "version": "==0.10.2" + }, + "urllib3": { + "hashes": [ + "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14", + "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "version": "==1.26.9" + }, + "vega-api-client": { + "hashes": [ + "sha256:20ed17ddf3d829eef795badb8ad02ac0091a18e607bfd2c9a90828270c0e527f", + "sha256:fdcf786de54f56c5b48a31f5662e9984d3262e54f45a33245eea4b3949f5eb70" + ], + "index": "pypi", + "version": "==0.49.2" + } + }, + "develop": { + "attrs": { + "hashes": [ + "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", + "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==21.4.0" + }, + "black": { + "hashes": [ + "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b", + "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176", + "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09", + "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a", + "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015", + "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79", + "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb", + "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20", + "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464", + "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968", + "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82", + "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21", + "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0", + "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265", + "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b", + "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a", + "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72", + "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce", + "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0", + "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a", + "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163", + "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad", + "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d" + ], + "index": "pypi", + "version": "==22.3.0" + }, + "certifi": { + "hashes": [ + "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", + "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" + ], + "version": "==2021.10.8" + }, + "charset-normalizer": { + "hashes": [ + "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597", + "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df" + ], + "markers": "python_version >= '3'", + "version": "==2.0.12" + }, + "click": { + "hashes": [ + "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e", + "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72" + ], + "markers": "python_version >= '3.7'", + "version": "==8.1.2" + }, + "flake8": { + "hashes": [ + "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d", + "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d" + ], + "index": "pypi", + "version": "==4.0.1" + }, + "idna": { + "hashes": [ + "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", + "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" + ], + "markers": "python_version >= '3'", + "version": "==3.3" + }, + "iniconfig": { + "hashes": [ + "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", + "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + ], + "version": "==1.1.1" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, + "mypy-extensions": { + "hashes": [ + "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", + "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + ], + "version": "==0.4.3" + }, + "packaging": { + "hashes": [ + "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", + "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + ], + "markers": "python_version >= '3.6'", + "version": "==21.3" + }, + "pathspec": { + "hashes": [ + "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a", + "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1" + ], + "version": "==0.9.0" + }, + "platformdirs": { + "hashes": [ + "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d", + "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227" + ], + "markers": "python_version >= '3.7'", + "version": "==2.5.1" + }, + "pluggy": { + "hashes": [ + "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", + "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" + ], + "markers": "python_version >= '3.6'", + "version": "==1.0.0" + }, + "py": { + "hashes": [ + "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", + "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.11.0" + }, + "pycodestyle": { + "hashes": [ + "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20", + "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==2.8.0" + }, + "pyflakes": { + "hashes": [ + "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c", + "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.4.0" + }, + "pyparsing": { + "hashes": [ + "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea", + "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484" + ], + "markers": "python_version >= '3.6'", + "version": "==3.0.7" + }, + "pytest": { + "hashes": [ + "sha256:841132caef6b1ad17a9afde46dc4f6cfa59a05f9555aae5151f73bdf2820ca63", + "sha256:92f723789a8fdd7180b6b06483874feca4c48a5c76968e03bb3e7f806a1869ea" + ], + "index": "pypi", + "version": "==7.1.1" + }, + "requests": { + "hashes": [ + "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61", + "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d" + ], + "index": "pypi", + "version": "==2.27.1" + }, + "requests-mock": { + "hashes": [ + "sha256:0a2d38a117c08bb78939ec163522976ad59a6b7fdd82b709e23bb98004a44970", + "sha256:8d72abe54546c1fc9696fa1516672f1031d72a55a1d66c85184f972a24ba0eba" + ], + "index": "pypi", + "version": "==1.9.3" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "tomli": { + "hashes": [ + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" + ], + "markers": "python_version < '3.11'", + "version": "==2.0.1" + }, + "typing-extensions": { + "hashes": [ + "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42", + "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2" + ], + "markers": "python_version < '3.10'", + "version": "==4.1.1" + }, + "urllib3": { + "hashes": [ + "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14", + "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "version": "==1.26.9" + } + } +} diff --git a/examples/__init__.py b/examples/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/examples/nullchain.py b/examples/nullchain.py new file mode 100644 index 000000000..fa23ccd82 --- /dev/null +++ b/examples/nullchain.py @@ -0,0 +1,36 @@ +from collections import namedtuple + +from vega_sim.null_service import VegaServiceNull + + +WalletConfig = namedtuple("WalletConfig", ["name", "passphrase"]) + +# Set up parties in the market/ Submit liquidity provision/ Control midprice +MM_WALLET = WalletConfig("wwestgarth", "pin") + +# The party to send selling/buying MOs to hit LP orders +TRADER_WALLET = WalletConfig("Zl3pLs6Xk6SwIK7Jlp2x", "bJQDDVGAhKkj3PVCc7Rr") + +# The party randomly post LOs at buy/sell side to simulate real Market situation +RANDOM_WALLET = WalletConfig("OJpVLvU5fgLJbhNPdESa", "GmJTt9Gk34BHDlovB7AJ") + +# The party to terminate the market and send settlment price +TERMINATE_WALLET = WalletConfig("FJMKnwfZdd48C8NqvYrG", "bY3DxwtsCstMIIZdNpKs") + +wallets = [MM_WALLET, TRADER_WALLET, RANDOM_WALLET, TERMINATE_WALLET] + +if __name__ == "__main__": + vega = VegaServiceNull() + vega.start() + import time + + time.sleep(10) + for wallet in wallets: + vega.create_wallet(wallet.name, wallet.passphrase) + + vega.mint( + MM_WALLET.name, + asset="6d9d35f657589e40ddfb448b7ad4a7463b66efb307527fedd2aa7df1bbd5ea61", + amount=10000000000, + ) + # vega.propose_market() diff --git a/setup.py b/setup.py new file mode 100644 index 000000000..9d825d8e5 --- /dev/null +++ b/setup.py @@ -0,0 +1,37 @@ +import os +import setuptools + + +VERSION = "0.0.1" + + +def package_files(directory): + paths = [] + for (path, directories, filenames) in os.walk(directory): + for filename in filenames: + paths.append(os.path.join("..", path, filename)) + return paths + + +extra_files = package_files("vega_sim/vegahome") + + +setuptools.setup( + name="vega-market-sim", + version=VERSION, + author="Vega", + author_email="hi@vega.xyz", + description="Simulator for running self-contained Vega chain on local PC", + url="https://github.com/vegaprotocol/vega-market-sim", + packages=setuptools.find_packages(exclude=["tests", "examples"]), + package_data={"": extra_files, "vega_sim": ["bin/*"]}, + classifiers=[ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + ], + python_requires=">=3.7", + install_requires=[], + setup_requires=["wheel"], + zip_safe=True, +) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_service.py b/tests/test_service.py new file mode 100644 index 000000000..76479894e --- /dev/null +++ b/tests/test_service.py @@ -0,0 +1,76 @@ +import json +import pytest +import requests_mock + +from vega_sim.service import VegaService +from vega_sim.api.wallet import WALLET_CREATION_URL, WALLET_KEY_URL, WALLET_LOGIN_URL + + +class StubService(VegaService): + def __init__(self, wallet_url: str, data_url: str, faucet_url: str): + super().__init__() + self.wallet_url_str = wallet_url + self.data_url_str = data_url + self.faucet_url_str = faucet_url + + def wallet_url(self) -> str: + return self.wallet_url_str + + def data_node_rest_url(self) -> str: + return self.data_url_str + + def faucet_url(self) -> str: + return self.faucet_url_str + + +@pytest.fixture +def stub_service(): + return StubService( + "localhost:TEST_WALLET", "localhost:TEST_DATA", "localhost:TEST_FAUCET" + ) + + +def test_base_service_wallet_creation(stub_service: StubService): + with requests_mock.Mocker() as req_mocker: + req_mocker.post( + WALLET_CREATION_URL.format(wallet_server_url="localhost:TEST_WALLET"), + json=lambda req, _: { + "token": req.json()["wallet"] + req.json()["passphrase"] + }, + ) + req_mocker.post( + WALLET_KEY_URL.format(wallet_server_url="localhost:TEST_WALLET"), + json=lambda req, _: { + "key": { + "pub": req.json()["passphrase"] + json.dumps(req.json()["meta"]) + } + }, + ) + stub_service.create_wallet("TEST_NAME", "TEST_PHRASE") + assert stub_service.login_tokens["TEST_NAME"] == "TEST_NAMETEST_PHRASE" + assert ( + stub_service.pub_keys["TEST_NAME"] == 'TEST_PHRASE[{"name": "default_key"}]' + ) + + +def test_base_service_wallet_login(stub_service: StubService): + with requests_mock.Mocker() as req_mocker: + req_mocker.post( + WALLET_LOGIN_URL.format(wallet_server_url="localhost:TEST_WALLET"), + json=lambda req, _: { + "token": req.json()["wallet"] + req.json()["passphrase"] + }, + ) + req_mocker.post( + WALLET_KEY_URL.format(wallet_server_url="localhost:TEST_WALLET"), + json=lambda req, _: { + "key": { + "pub": req.json()["passphrase"] + json.dumps(req.json()["meta"]) + } + }, + ) + stub_service.login("TEST_NAME", "TEST_PHRASE") + assert stub_service.login_tokens["TEST_NAME"] == "TEST_NAMETEST_PHRASE" + assert ( + stub_service.pub_keys["TEST_NAME"] == 'TEST_PHRASE[{"name": "default_key"}]' + ) diff --git a/vega_sim/__init__.py b/vega_sim/__init__.py new file mode 100644 index 000000000..618509ca1 --- /dev/null +++ b/vega_sim/__init__.py @@ -0,0 +1,4 @@ +from pkg_resources import resource_filename + +vega_home_path = resource_filename(__name__, "vegahome") +vega_bin_path = resource_filename(__name__, "bin") diff --git a/vega_sim/api/__init__.py b/vega_sim/api/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/vega_sim/api/faucet.py b/vega_sim/api/faucet.py new file mode 100644 index 000000000..1220ac373 --- /dev/null +++ b/vega_sim/api/faucet.py @@ -0,0 +1,16 @@ +import requests + +BASE_MINT_URL = "{faucet_url}/api/v1/mint" + + +def mint(pub_key: str, asset: str, amount: int, faucet_url: str) -> None: + url = BASE_MINT_URL.format(faucet_url=faucet_url) + payload = { + "party": pub_key, + "amount": str(amount), + # "asset": "VOTE", + "asset": asset, + } + + r = requests.post(url, json=payload) + r.raise_for_status() diff --git a/vega_sim/api/test_fns.py b/vega_sim/api/test_fns.py new file mode 100644 index 000000000..d373be9e9 --- /dev/null +++ b/vega_sim/api/test_fns.py @@ -0,0 +1,230 @@ +import os +import sys +import requests +import time + + +def propose_market( + wallet_name, wallet_passphrase, pubkey, node_url_rest, wallet_server_url +): + + """ + Propose a market by user {wallet_name} on the node {node_url_rest}. + """ + + # Login wallet + req = {"wallet": wallet_name, "passphrase": wallet_passphrase} + response = requests.post(f"{wallet_server_url}/api/v1/auth/token", json=req) + token = response.json()["token"] + + assert token != "" + print(f"Logged in to wallet {wallet_name} successfully.", "\n") + headers = {"Authorization": f"Bearer {token}"} + + # Make sure Vega network has the settlement asset + url = f"{node_url_rest}/assets" + response = requests.get(url) + # Find settlement asset with name tDAI + tDAI_id = None + assets = response.json()["assets"] + for asset in assets: + if asset["details"]["symbol"] == "tDAI": + tDAI_id = asset["id"] + break + + if tDAI_id is None: + print( + "tDAI asset not found on specified Vega network, please propose and " + "create this asset first" + ) + return + + # Make sure Vega network has governance asset + vote_asset_id = next( + (x["id"] for x in assets if x["details"]["symbol"] == "VOTE"), None + ) + if vote_asset_id is None: + print( + "VEGA asset not found on specified Vega network, please symbol name check and try again" + ) + return + + # Request accounts for party and check governance asset balance + url = f"{node_url_rest}/parties/{pubkey}/accounts" + response = requests.get(url) + + voting_balance = 0 + accounts = response.json()["accounts"] + for account in accounts: + if account["asset"] == vote_asset_id: + voting_balance = account["balance"] + break + + if voting_balance == 0: + print(f"Please deposit VEGA asset to public key {pubkey} and try again") + sys.exit(1) + + # Get blockchain time + # Request the current blockchain time, and convert to time in seconds + response = requests.get(f"{node_url_rest}/time") + blockchain_time = int(response.json()["timestamp"]) + blockchain_time_seconds = int(blockchain_time / 1e9) + + assert blockchain_time > 0 + assert blockchain_time_seconds > 0 + print( + f"Blockchain time: {blockchain_time} ({blockchain_time_seconds} seconds " + "past epoch)", + "\n", + ) + # Propose market + proposal_ref = f"{pubkey}-IM-A-Market" + + # Set closing/enactment and validation timestamps to valid time offsets + # from the current Vega blockchain time + closing_time = blockchain_time_seconds + 360 + enactment_time = blockchain_time_seconds + 480 + validation_time = blockchain_time_seconds + 1 + + # The proposal command below contains the configuration for a new market + proposal = { + "proposalSubmission": { + "reference": proposal_ref, + "terms": { + "closingTimestamp": closing_time, + "enactmentTimestamp": enactment_time, + "validationTimestamp": validation_time, + "newMarket": { + "changes": { + "decimalPlaces": 5, + "instrument": { + "code": "CRYPTO:BTCDAI/DEC22", + "future": { + "oracleSpecForSettlementPrice": { + "pubKeys": [ + "af71ba303d0bad4b22f50f5e964510d2aef2212d60111c20a5aaefc1e254f860" + ], + "filters": [ + { + "key": { + "name": "price.DAI.value", + "type": "TYPE_INTEGER", + }, + "conditions": [], + }, + ], + }, + "oracleSpecForTradingTermination": { + "pubKeys": [ + "af71ba303d0bad4b22f50f5e964510d2aef2212d60111c20a5aaefc1e254f860" + ], + "filters": [ + { + "key": { + "name": "trading.terminated", + "type": "TYPE_BOOLEAN", + }, + "conditions": [], + }, + ], + }, + "oracleSpecBinding": { + "settlementPriceProperty": "price.DAI.value", + "tradingTerminationProperty": "trading.terminated", + }, + "quoteName": "tDAI", + "settlementAsset": tDAI_id, + }, + "name": "BTC/DAI (2022, tDAI)", + }, + "metadata": [ + "base:BTC", + "quote:DAI", + ], + "liquidityMonitoringParameters": { + "targetStakeParameters": { + "timeWindow": 3600, + "scalingFactor": 10, + }, + "triggeringRatio": 0.7, + "auctionExtension": 0, + }, + "logNormal": { + "riskAversionParameter": 0.01, + "tau": 1.90128526884173e-06, + "params": {"mu": 0, "r": 0.016, "sigma": 1.5}, + }, + }, + "liquidityCommitment": { + "commitmentAmount": "10000", + "fee": "0.002", + "sells": [ + { + "reference": "PEGGED_REFERENCE_MID", + "proportion": 1, + "offset": "50", + }, + ], + "buys": [ + { + "reference": "PEGGED_REFERENCE_MID", + "proportion": 1, + "offset": "50", + }, + ], + "reference": "", + }, + }, + }, + }, + "pubKey": pubkey, + "propagate": True, + } + print("Submit a market proposal: ", proposal) + + # Sign the new market proposal transaction + url = f"{wallet_server_url}/api/v1/command/sync" + response = requests.post(url, headers=headers, json=proposal) + print("Signed market proposal and sent to Vega", "\n") + + # Wait for proposal to be included in a block and to be accepted by Vega network + proposal_id = "" + done = False + while not done: + time.sleep(0.5) + print(".", end="", flush=True) + my_proposals = requests.get(node_url_rest + "/parties/" + pubkey + "/proposals") + if my_proposals.status_code != 200: + continue + + for n in my_proposals.json()["data"]: + if n["proposal"]["reference"] == proposal_ref: + proposal_id = n["proposal"]["id"] + print("Your proposal has been accepted by the network", "\n") + done = True + break + + assert proposal_id != "" + + # Vote on the market + # Create a vote message, to vote on the proposal + vote = { + "voteSubmission": { + "value": "VALUE_YES", + "proposalId": proposal_id, + }, + "pubKey": pubkey, + "propagate": True, + } + + # Sign the vote transaction + url = f"{wallet_server_url}/api/v1/command/sync" + response = requests.post(url, headers=headers, json=vote) + print("Signed vote on proposal and sent to Vega", "\n") + + # Put timeforward by hand in Null blockchain. + os.system("python pv-timeforward -d 480s") + + print("The market has been set up.", "\n") + + return tDAI_id diff --git a/vega_sim/api/wallet.py b/vega_sim/api/wallet.py new file mode 100644 index 000000000..7c22c774c --- /dev/null +++ b/vega_sim/api/wallet.py @@ -0,0 +1,91 @@ +from typing import Dict, List +import requests + +WALLET_CREATION_URL = "{wallet_server_url}/api/v1/wallets" +WALLET_LOGIN_URL = "{wallet_server_url}/api/v1/auth/token" +WALLET_KEY_URL = "{wallet_server_url}/api/v1/keys" + + +def create_wallet(name: str, passphrase: str, wallet_url: str) -> str: + """Generates a new wallet from a name - passphrase pair in the given vega service. + + Args: + name: + str, The name to use for the wallet + passphrase: + str, The passphrase to use when logging in to created wallet in future + wallet_url: + str, base URL of the wallet service + Returns: + str, login token to use in authenticated requests + """ + req = {"wallet": name, "passphrase": passphrase} + response = requests.post( + WALLET_CREATION_URL.format(wallet_server_url=wallet_url), + json=req, + ) + response.raise_for_status() + return response.json()["token"] + + +def login(name: str, passphrase: str, wallet_url: str) -> str: + """Logs in to existing wallet in the given vega service. + + Args: + name: + str, The name of the wallet + passphrase: + str, The login passphrase used when creating the wallet + wallet_url: + str, base URL of the wallet service + Returns: + str, login token to use in authenticated requests + """ + req = {"wallet": name, "passphrase": passphrase} + response = requests.post( + WALLET_LOGIN_URL.format(wallet_server_url=wallet_url), + json=req, + ) + response.raise_for_status() + return response.json()["token"] + + +def generate_keypair( + token: str, + passphrase: str, + wallet_url: str, + metadata: List[Dict[str, str]], +) -> str: + """Generates a keypair for given token validated wallet. + + Args: + token: + str, token returned from login to wallet + passphrase: + str, passphrase used for login to corresponding wallet + wallet_url: + str, base URL of the wallet service + metadata: + list[dict], metadata which is stored alongside keys to identify them + Returns: + str, public key generated + """ + headers = {"Authorization": f"Bearer {token}"} + req = { + "passphrase": passphrase, + "meta": metadata, + } + response = requests.post( + WALLET_KEY_URL.format(wallet_server_url=wallet_url), headers=headers, json=req + ) + response.raise_for_status() + return response.json()["key"]["pub"] + + +def get_keypairs(token: str, wallet_url: str) -> Dict: + headers = {"Authorization": f"Bearer {token}"} + response = requests.get( + WALLET_KEY_URL.format(wallet_server_url=wallet_url), headers=headers + ) + response.raise_for_status() + return response.json()["keys"] diff --git a/vega_sim/constants.py b/vega_sim/constants.py new file mode 100644 index 000000000..c233e97b4 --- /dev/null +++ b/vega_sim/constants.py @@ -0,0 +1,4 @@ +WALLET_DEFAULT_PORT = 1789 +DATA_NODE_REST_PORT = 3009 +DATA_NODE_GRPC_PORT = 3002 +FAUCET_PORT = 1790 diff --git a/vega_sim/null_service.py b/vega_sim/null_service.py new file mode 100644 index 000000000..e149b3d97 --- /dev/null +++ b/vega_sim/null_service.py @@ -0,0 +1,214 @@ +import atexit +import logging +import shutil +import signal +import subprocess +import tempfile +import time +from multiprocessing import Process +from os import path +from typing import List, Optional + +import requests +import toml +from urllib3.exceptions import MaxRetryError + +# import vegaapiclient as vac + +import vega_sim.constants as constants +from vega_sim import vega_home_path, vega_bin_path +from vega_sim.api.test_fns import propose_market +from vega_sim.constants import ( + DATA_NODE_GRPC_PORT, + DATA_NODE_REST_PORT, + FAUCET_PORT, + WALLET_DEFAULT_PORT, +) +from vega_sim.service import VegaService + +logger = logging.getLogger(__name__) + + +def _popen_process(popen_args: List[str]) -> subprocess.Popen[bytes]: + sub_proc = subprocess.Popen(popen_args) + atexit.register(lambda: sub_proc.terminate()) + return sub_proc + + +def _update_node_config(vega_home: str) -> None: + config_path = path.join(vega_home, "config", "node", "config.toml") + config_toml = toml.load(config_path) + config_toml["Blockchain"]["Null"]["GenesisFile"] = path.join( + vega_home, "genesis.json" + ) + + with open(config_path, "w") as f: + toml.dump(config_toml, f) + + +def manage_vega_processes( + vega_path: str, + data_node_path: str, + vega_wallet_path: str, +) -> None: + with tempfile.TemporaryDirectory() as tmp_vega_dir: + + shutil.copytree(vega_home_path, f"{tmp_vega_dir}/vegahome") + + tmp_vega_home = tmp_vega_dir + "/vegahome" + _update_node_config(tmp_vega_home) + + dataNodeProcess = _popen_process( + [ + data_node_path, + "node", + "--home=" + tmp_vega_home, + ] + ) + + vegaFaucetProcess = _popen_process( + [ + vega_path, + "faucet", + "run", + "--passphrase-file=" + tmp_vega_home + "/passphrase-file", + "--home=" + tmp_vega_home, + ] + ) + + vegaNodeProcess = _popen_process( + [ + vega_path, + "node", + "--nodewallet-passphrase-file=" + tmp_vega_home + "/passphrase-file", + "--home=" + tmp_vega_home, + ] + ) + + vegaWalletProcess = _popen_process( + [ + vega_wallet_path, + "service", + "run", + "--network", + "local", + "--home=" + tmp_vega_home, + ] + ) + + signal.sigwait([signal.SIGKILL, signal.SIGTERM]) + processes = [ + dataNodeProcess, + vegaFaucetProcess, + vegaWalletProcess, + vegaNodeProcess, + ] + for process in processes: + process.terminate() + for process in processes: + return_code = process.poll() + if return_code is not None: + continue + # Could mean 5s wait per process, but we're not holding the outer process + # and would really be a symptom of these children taking too long to close + time.sleep(5) + process.kill() + + +class VegaStartupTimeoutError(Exception): + pass + + +class ServiceNotStartedError(Exception): + pass + + +class VegaServiceNull(VegaService): + def __init__( + self, + vega_path: Optional[str] = None, + data_node_path: Optional[str] = None, + vega_wallet_path: Optional[str] = None, + wallet_port: int = WALLET_DEFAULT_PORT, + data_node_rest_port: int = DATA_NODE_REST_PORT, + data_node_grpc_port: int = DATA_NODE_GRPC_PORT, + faucet_port: Optional[int] = FAUCET_PORT, + start_immediately: bool = False, + ): + super().__init__() + self.vega_path = vega_path or path.join(vega_bin_path, "vega") + self.data_node_path = data_node_path or path.join(vega_bin_path, "data-node") + self.vega_wallet_path = vega_wallet_path or path.join( + vega_bin_path, "vegawallet" + ) + self.wallet_port = wallet_port + self.data_node_rest_port = data_node_rest_port + self.data_node_grpc_port = data_node_grpc_port + self.faucet_port = faucet_port + self.proc = None + + if start_immediately: + self.start() + # self.core_client = vac.VegaCoreClient(self.data_node_grpc_port) + + def _check_started(self) -> None: + if self.proc is None: + raise ServiceNotStartedError("NullChain Vega accessed without starting") + + def start(self) -> None: + self.proc = Process( + target=manage_vega_processes, + kwargs={ + "vega_path": self.vega_path, + "data_node_path": self.data_node_path, + "vega_wallet_path": self.vega_wallet_path, + }, + daemon=True, + ) + self.proc.start() + # Wait for startup + for _ in range(30): + try: + requests.get( + f"http://localhost:{self.wallet_port}/api/v1/status" + ).raise_for_status() + return + except ( + MaxRetryError, + requests.exceptions.ConnectionError, + requests.exceptions.HTTPError, + ): + time.sleep(0.5) + raise VegaStartupTimeoutError( + "Timed out waiting for Vega simulator to start up" + ) + + # Class internal as at some point the host may vary as well as the port + @staticmethod + def _build_url(port: int): + return f"http://localhost:{port}" + + def stop(self) -> None: + if self.proc is None: + logger.info("Stop called but nothing to stop") + else: + self.proc.terminate() + + def propose_market(self): + self._check_started() + propose_market( + wallet_name=constants.WALLET_NAME_MM, + wallet_passphrase=constants.WALLET_PASSPHRASE_MM, + pubkey=constants.PUBKEY_LP, + node_url_rest=self.data_node_rest_url(), + wallet_server_url=self.wallet_url(), + ) + + def wallet_url(self) -> str: + return self._build_url(self.wallet_port) + + def data_node_rest_url(self) -> str: + return self._build_url(self.data_node_rest_port) + + def faucet_url(self) -> str: + return self._build_url(self.faucet_port) diff --git a/vega_sim/service.py b/vega_sim/service.py new file mode 100644 index 000000000..e6257cb98 --- /dev/null +++ b/vega_sim/service.py @@ -0,0 +1,86 @@ +import vega_sim.api.wallet as wallet +import vega_sim.api.faucet as faucet + +from abc import ABC + + +class LoginError(Exception): + pass + + +class VegaService(ABC): + def __init__(self): + self.login_tokens = {} + self.pub_keys = {} + + def wallet_url(self) -> str: + pass + + def data_node_rest_url(self) -> str: + pass + + def faucet_url(self) -> str: + pass + + # def node_rest_url(self): + # pass + + def _check_logged_in(self, wallet_name: str): + if wallet_name not in self.login_tokens: + raise LoginError("Wallet not yet logged into") + + def login(self, name: str, passphrase: str) -> str: + """Logs in to existing wallet in the given vega service. + + Args: + name: + str, The name of the wallet + passphrase: + str, The login passphrase used when creating the wallet + Returns: + str, public key associated to this waller + """ + self.login_tokens[name] = wallet.login(name, passphrase, self.wallet_url()) + self.pub_keys[name] = wallet.generate_keypair( + self.login_tokens[name], + passphrase, + self.wallet_url(), + metadata=[{"name": "default_key"}], + ) + return self.pub_keys[name] + + def create_wallet(self, name: str, passphrase: str) -> str: + """Logs in to existing wallet in the given vega service. + + Args: + name: + str, The name of the wallet + passphrase: + str, The login passphrase used when creating the wallet + Returns: + str, public key associated to this waller + """ + token = wallet.create_wallet(name, passphrase, self.wallet_url()) + self.login_tokens[name] = token + self.pub_keys[name] = wallet.generate_keypair( + self.login_tokens[name], + passphrase, + self.wallet_url(), + metadata=[{"name": "default_key"}], + ) + + def mint(self, wallet_name: str, asset: str, amount: int) -> None: + """Mints a given amount of requested asset into the associated wallet + + Args: + wallet_name: + str, The name of the wallet + asset: + str, The name of the asset to mint + amount: + int, the amount of asset to mint + """ + self._check_logged_in(wallet_name) + faucet.mint( + self.pub_keys[wallet_name], asset, amount, faucet_url=self.faucet_url() + ) diff --git a/vega_sim/vegahome/config/data-node/config.toml b/vega_sim/vegahome/config/data-node/config.toml new file mode 100644 index 000000000..73c5b9451 --- /dev/null +++ b/vega_sim/vegahome/config/data-node/config.toml @@ -0,0 +1,316 @@ +GatewayEnabled = true +# Set the max number of open files (see: ulimit -n) +UlimitNOFile = 8192 + +[API] + Level = "Debug" + Timeout = "5s" + Port = 3007 + IP = "0.0.0.0" + StreamRetries = 3 + CoreNodeIP = "localhost" + CoreNodeGRPCPort = 3002 + +[Accounts] + Level = "Debug" + +[Candles] + Level = "Debug" + +[Logging] + Environment = "dev" + # This section takes effect only when Environment is set to "custom". + [Logging.Custom] + [Logging.Custom.Zap] + Level = -1 + Development = true + Encoding = "console" + OutputPaths = ["stdout"] + ErrorOutputPaths = ["stderr"] + [Logging.Custom.ZapEncoder] + CallerKey = "C" + EncodeCaller = "short" + EncodeDuration = "string" + EncodeLevel = "capital" + EncodeName = "full" + EncodeTime = "iso8601" + LevelKey = "L" + LineEnding = "\n" + MessageKey = "M" + NameKey = "N" + TimeKey = "T" + +[Markets] + Level = "Debug" + +[Oracles] + Level = "Debug" + +[Orders] + Level = "Debug" + +[Liquidity] + Level = "Debug" + +[Parties] + Level = "Debug" + +[Risk] + Level = "Debug" + +[Storage] + Level = "Warning" + Timeout = "5s" + LogPositionStoreDebug = false + [Storage.Accounts] + SyncWrites = true + TableLoadingMode = "MemoryMap" + ValueLogLoadingMode = "MemoryMap" + NumVersionsToKeep = 1 + MaxTableSize = 67108864 + LevelSizeMultiplier = 2 + MaxLevels = 10 + ValueThreshold = 16 + NumMemtables = 1 + NumLevelZeroTables = 1 + NumLevelZeroTablesStall = 2 + LevelOneSize = 268435456 + ValueLogFileSize = 1073741823 + ValueLogMaxEntries = 2500000 + NumCompactors = 2 + CompactL0OnClose = true + ReadOnly = false + Truncate = false + LogRotatesToFlush = 2 + Compression = 1 + EventLogging = true + BlockSize = 4096 + BloomFalsePositive = 0.01 + KeepL0InMemory = false + MaxCacheSize = 16777216 + VerifyValueChecksum = false + ChecksumVerificationMode = 0 + [Storage.Candles] + SyncWrites = true + TableLoadingMode = "MemoryMap" + ValueLogLoadingMode = "MemoryMap" + NumVersionsToKeep = 1 + MaxTableSize = 67108864 + LevelSizeMultiplier = 2 + MaxLevels = 10 + ValueThreshold = 16 + NumMemtables = 1 + NumLevelZeroTables = 1 + NumLevelZeroTablesStall = 2 + LevelOneSize = 268435456 + ValueLogFileSize = 1073741823 + ValueLogMaxEntries = 2500000 + NumCompactors = 2 + CompactL0OnClose = true + ReadOnly = false + Truncate = false + LogRotatesToFlush = 2 + Compression = 1 + EventLogging = true + BlockSize = 4096 + BloomFalsePositive = 0.01 + KeepL0InMemory = false + MaxCacheSize = 16777216 + VerifyValueChecksum = false + ChecksumVerificationMode = 0 + [Storage.Checkpoints] + SyncWrites = true + TableLoadingMode = "MemoryMap" + ValueLogLoadingMode = "MemoryMap" + NumVersionsToKeep = 1 + MaxTableSize = 67108864 + LevelSizeMultiplier = 2 + MaxLevels = 10 + ValueThreshold = 16 + NumMemtables = 1 + NumLevelZeroTables = 1 + NumLevelZeroTablesStall = 2 + LevelOneSize = 268435456 + ValueLogFileSize = 1073741823 + ValueLogMaxEntries = 2500000 + NumCompactors = 2 + CompactL0OnClose = true + ReadOnly = false + Truncate = false + LogRotatesToFlush = 2 + Compression = 1 + EventLogging = true + BlockSize = 4096 + BloomFalsePositive = 0.01 + KeepL0InMemory = false + MaxCacheSize = 16777216 + VerifyValueChecksum = false + ChecksumVerificationMode = 0 + [Storage.Markets] + SyncWrites = true + TableLoadingMode = "MemoryMap" + ValueLogLoadingMode = "MemoryMap" + NumVersionsToKeep = 1 + MaxTableSize = 67108864 + LevelSizeMultiplier = 2 + MaxLevels = 10 + ValueThreshold = 16 + NumMemtables = 1 + NumLevelZeroTables = 1 + NumLevelZeroTablesStall = 2 + LevelOneSize = 268435456 + ValueLogFileSize = 1073741823 + ValueLogMaxEntries = 2500000 + NumCompactors = 2 + CompactL0OnClose = true + ReadOnly = false + Truncate = false + LogRotatesToFlush = 2 + Compression = 1 + EventLogging = true + BlockSize = 4096 + BloomFalsePositive = 0.01 + KeepL0InMemory = false + MaxCacheSize = 16777216 + VerifyValueChecksum = false + ChecksumVerificationMode = 0 + [Storage.Orders] + SyncWrites = true + TableLoadingMode = "MemoryMap" + ValueLogLoadingMode = "MemoryMap" + NumVersionsToKeep = 1 + MaxTableSize = 67108864 + LevelSizeMultiplier = 2 + MaxLevels = 10 + ValueThreshold = 16 + NumMemtables = 1 + NumLevelZeroTables = 1 + NumLevelZeroTablesStall = 2 + LevelOneSize = 268435456 + ValueLogFileSize = 1073741823 + ValueLogMaxEntries = 2500000 + NumCompactors = 2 + CompactL0OnClose = true + ReadOnly = false + Truncate = false + LogRotatesToFlush = 2 + Compression = 1 + EventLogging = true + BlockSize = 4096 + BloomFalsePositive = 0.01 + KeepL0InMemory = false + MaxCacheSize = 16777216 + VerifyValueChecksum = false + ChecksumVerificationMode = 0 + [Storage.Trades] + SyncWrites = true + TableLoadingMode = "MemoryMap" + ValueLogLoadingMode = "MemoryMap" + NumVersionsToKeep = 1 + MaxTableSize = 67108864 + LevelSizeMultiplier = 2 + MaxLevels = 10 + ValueThreshold = 16 + NumMemtables = 1 + NumLevelZeroTables = 1 + NumLevelZeroTablesStall = 2 + LevelOneSize = 268435456 + ValueLogFileSize = 1073741823 + ValueLogMaxEntries = 2500000 + NumCompactors = 2 + CompactL0OnClose = true + ReadOnly = false + Truncate = false + LogRotatesToFlush = 2 + Compression = 1 + EventLogging = true + BlockSize = 4096 + BloomFalsePositive = 0.01 + KeepL0InMemory = false + MaxCacheSize = 16777216 + VerifyValueChecksum = false + ChecksumVerificationMode = 0 + +[Trades] + Level = "Debug" + PageSizeDefault = 200 + PageSizeMaximum = 200 + +[Time] + Level = "Debug" + +[Gateway] + Level = "Debug" + Timeout = "5s" + SubscriptionRetries = 3 + GraphQLPlaygroundEnabled = true + [Gateway.Node] + Port = 3007 + IP = "0.0.0.0" + [Gateway.GraphQL] + Port = 3008 + IP = "0.0.0.0" + Enabled = true + ComplexityLimit = 0 + [Gateway.REST] + Port = 3009 + IP = "0.0.0.0" + Enabled = true + APMEnabled = true + +[Metrics] + Level = "Debug" + Timeout = "5s" + Port = 2112 + Path = "/metrics" + Enabled = false + +[Transfers] + Level = "Debug" + +[Governance] + Level = "Debug" + +[Assets] + Level = "Debug" + +[Notary] + Level = "Debug" + +[Subscribers] + OrderEventLogLevel = "Debug" + MarketEventLogLevel = "Debug" + +[Fee] + Level = "Debug" + +[Broker] + Level = "Debug" + [Broker.SocketConfig] + IP = "0.0.0.0" + Port = 3005 + MaxReceiveTimeouts = 3 + TransportType = "tcp" + +[Nodes] + Level = "Debug" + +[Epochs] + Level = "Debug" + +[Delegations] + Level = "Debug" + +[Checkpoint] + Level = "Debug" + +[NetworkParameters] + Level = "Debug" + +[Pprof] + Level = "Debug" + Enabled = false + Port = 6060 + ProfilesDir = "/tmp" + BlockProfileRate = 0 + MutexProfileFraction = 0 diff --git a/vega_sim/vegahome/config/faucet/config.toml b/vega_sim/vegahome/config/faucet/config.toml new file mode 100644 index 000000000..b2243832d --- /dev/null +++ b/vega_sim/vegahome/config/faucet/config.toml @@ -0,0 +1,13 @@ +Level = "Debug" +WalletName = "vega.1643100690865690276" +Port = 1790 +IP = "0.0.0.0" + +[RateLimit] + CoolDown = "1m0s" + AllowList = ["10.0.0.0/8", "127.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "fe80::/10"] + +[Node] + Port = 3002 + IP = "localhost" + Retries = 5 diff --git a/vega_sim/vegahome/config/node/config.toml b/vega_sim/vegahome/config/node/config.toml new file mode 100644 index 000000000..f38541199 --- /dev/null +++ b/vega_sim/vegahome/config/node/config.toml @@ -0,0 +1,217 @@ +NodeMode = "validator" +# Set the max number of open files (see: ulimit -n) +UlimitNOFile = 8192 + +[API] + Level = "Debug" + Timeout = "5s" + Port = 3002 + IP = "0.0.0.0" + StreamRetries = 3 + DisableTxCommit = true + [API.REST] + Port = 3003 + IP = "0.0.0.0" + Enabled = true + APMEnabled = true + +[Blockchain] + Level = "Debug" + LogTimeDebug = true + LogOrderSubmitDebug = true + LogOrderAmendDebug = false + LogOrderCancelDebug = false + ChainProvider = "nullchain" + [Blockchain.Tendermint] + Level = "Debug" + LogTimeDebug = true + ClientAddr = "tcp://0.0.0.0:26657" + ClientEndpoint = "/websocket" + ServerPort = 26658 + ServerAddr = "localhost" + ABCIRecordDir = "" + ABCIReplayFile = "" + [Blockchain.Null] + Level = "Debug" + BlockDuration = "1s" + TransactionsPerBlock = 1 + GenesisFile = "./null-blockchain/node-startup/vegahome/genesis.json" + IP = "0.0.0.0" + Port = 3101 + +[Collateral] + Level = "Debug" + +[CoreAPI] + LogLevel = "Debug" + Accounts = true + Assets = true + NetworkParameters = true + NetworkLimits = true + Parties = true + Validators = true + Proposals = true + Markets = true + Votes = true + MarketsData = true + PartiesStake = true + Delegations = true + +[Execution] + Level = "Debug" + [Execution.Matching] + Level = "Debug" + LogPriceLevelsDebug = false + LogRemovedOrdersDebug = false + [Execution.Risk] + Level = "Debug" + LogMarginUpdate = true + [Execution.Position] + Level = "Debug" + LogPositionUpdate = true + [Execution.Settlement] + Level = "Debug" + [Execution.Fee] + Level = "Debug" + [Execution.Liquidity] + Level = "Debug" + +[Processor] + Level = "Debug" + LogOrderSubmitDebug = true + LogOrderAmendDebug = false + LogOrderCancelDebug = false + [Processor.Ratelimit] + Requests = 500 + PerNBlocks = 10 + +[Logging] + Environment = "dev" + # This section takes effect only when Environment is set to "custom". + [Logging.Custom] + [Logging.Custom.Zap] + Level = -1 + Development = true + Encoding = "console" + OutputPaths = ["stdout"] + ErrorOutputPaths = ["stderr"] + [Logging.Custom.ZapEncoder] + CallerKey = "C" + EncodeCaller = "short" + EncodeDuration = "string" + EncodeLevel = "capital" + EncodeName = "full" + EncodeTime = "iso8601" + LevelKey = "L" + LineEnding = "\n" + MessageKey = "M" + NameKey = "N" + TimeKey = "T" + +[Oracles] + Level = "Debug" + +[Time] + Level = "Debug" + +[Epoch] + Level = "Debug" + +[Monitoring] + Level = "Debug" + Interval = "500ms" + Retries = 5 + +[Metrics] + Level = "Debug" + Timeout = "5s" + Port = 2112 + Path = "/metrics" + Enabled = false + +[Governance] + Level = "Debug" + +[NodeWallet] + Level = "Debug" + [NodeWallet.ETH] + Level = "Debug" + Address = "http://127.0.0.1:545" + ClefAddress = "" + +[Assets] + Level = "Debug" + +[Notary] + Level = "Debug" + +[EvtForward] + Level = "Debug" + RetryRate = "10s" + BlockchainQueueAllowlist = ["8b4f12b0d3919ea6e433b9736218dca036443aa08fd10f978a1fbede9621073f"] + +[Genesis] + Level = "Debug" + +[Validators] + Level = "Debug" + +[Banking] + Level = "Debug" + +[Stats] + Level = "Debug" + +[NetworkParameters] + Level = "Debug" + +[Limits] + Level = "Debug" + +[Checkpoint] + Level = "Debug" + +[Staking] + Level = "Debug" + +[Broker] + Level = "Debug" + [Broker.Socket] + DialTimeout = "2m0s" + DialRetryInterval = "5s" + SocketQueueTimeout = "3s" + EventChannelBufferSize = 10000000 + SocketChannelBufferSize = 1000000 + MaxSendTimeouts = 10 + Address = "localhost" + Port = 3005 + Enabled = true + Transport = "tcp" + +[Rewards] + Level = "Debug" + +[Delegation] + Level = "Debug" + +[Spam] + Level = "Debug" + +[Snapshot] + Level = "Debug" + KeepRecent = 10 + RetryLimit = 5 + Storage = "GOLevelDB" + DBPath = "" + StartHeight = 0 + +[StateVar] + Level = "Debug" + +[Pprof] + Level = "Debug" + Enabled = false + Port = 6060 + ProfilesDir = "/tmp" + BlockProfileRate = 0 + MutexProfileFraction = 0 diff --git a/vega_sim/vegahome/config/node/wallets.encrypted b/vega_sim/vegahome/config/node/wallets.encrypted new file mode 100644 index 000000000..36b3d6151 Binary files /dev/null and b/vega_sim/vegahome/config/node/wallets.encrypted differ diff --git a/vega_sim/vegahome/config/node_key.json b/vega_sim/vegahome/config/node_key.json new file mode 100644 index 000000000..38d3dd584 --- /dev/null +++ b/vega_sim/vegahome/config/node_key.json @@ -0,0 +1 @@ +{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fw2WkMqhzq6RUD5VON0kq2g43JhZokQlvx3zDW9abz0z8OWC1Eh2fd/vB3WJhMKKV7rwhlU27gHJ0qfMxyQvTQ=="}} \ No newline at end of file diff --git a/vega_sim/vegahome/config/priv_validator_key.json b/vega_sim/vegahome/config/priv_validator_key.json new file mode 100644 index 000000000..5fef7c4a5 --- /dev/null +++ b/vega_sim/vegahome/config/priv_validator_key.json @@ -0,0 +1,11 @@ +{ + "address": "7276CEC8C0552C1A1B39AF4D46323FE59699CAE6", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "6NemqXSfN4zfZvAQeIANflEFqQ98izX9C0KLI2dITSY=" + }, + "priv_key": { + "type": "tendermint/PrivKeyEd25519", + "value": "hPmbpT2fSkAHlGcyL2PfU459FNevUWZJCz7iIQShXevo16apdJ83jN9m8BB4gA1+UQWpD3yLNf0LQosjZ0hNJg==" + } +} \ No newline at end of file diff --git a/vega_sim/vegahome/config/wallet-service/networks/local.toml b/vega_sim/vegahome/config/wallet-service/networks/local.toml new file mode 100644 index 000000000..ff72f1efb --- /dev/null +++ b/vega_sim/vegahome/config/wallet-service/networks/local.toml @@ -0,0 +1,21 @@ +Name = "local" +Level = "Debug" +TokenExpiry = "168h0m0s" +Port = 1789 +Host = "0.0.0.0" + +[API] + [API.GRPC] + Hosts = ["localhost:3007"] + Retries = 5 + [API.REST] + Hosts = ["localhost:3009"] + [API.GraphQL] + Hosts = ["localhost:3008"] + +[Console] + URL = "" + LocalPort = 0 + +[Nodes] + Retries = 0 diff --git a/vega_sim/vegahome/data/faucet/wallets/vega.1639051237294446827 b/vega_sim/vegahome/data/faucet/wallets/vega.1639051237294446827 new file mode 100644 index 000000000..103c84c52 Binary files /dev/null and b/vega_sim/vegahome/data/faucet/wallets/vega.1639051237294446827 differ diff --git a/vega_sim/vegahome/data/faucet/wallets/vega.1641976836892788243 b/vega_sim/vegahome/data/faucet/wallets/vega.1641976836892788243 new file mode 100644 index 000000000..2672a23c3 Binary files /dev/null and b/vega_sim/vegahome/data/faucet/wallets/vega.1641976836892788243 differ diff --git a/vega_sim/vegahome/data/faucet/wallets/vega.1641977214518086643 b/vega_sim/vegahome/data/faucet/wallets/vega.1641977214518086643 new file mode 100644 index 000000000..e70275630 Binary files /dev/null and b/vega_sim/vegahome/data/faucet/wallets/vega.1641977214518086643 differ diff --git a/vega_sim/vegahome/data/faucet/wallets/vega.1641977270881740938 b/vega_sim/vegahome/data/faucet/wallets/vega.1641977270881740938 new file mode 100644 index 000000000..fbbb107b5 Binary files /dev/null and b/vega_sim/vegahome/data/faucet/wallets/vega.1641977270881740938 differ diff --git a/vega_sim/vegahome/data/faucet/wallets/vega.1641977376563008654 b/vega_sim/vegahome/data/faucet/wallets/vega.1641977376563008654 new file mode 100644 index 000000000..a0c6ef065 Binary files /dev/null and b/vega_sim/vegahome/data/faucet/wallets/vega.1641977376563008654 differ diff --git a/vega_sim/vegahome/data/faucet/wallets/vega.1641977471442889253 b/vega_sim/vegahome/data/faucet/wallets/vega.1641977471442889253 new file mode 100644 index 000000000..f9b5974e9 Binary files /dev/null and b/vega_sim/vegahome/data/faucet/wallets/vega.1641977471442889253 differ diff --git a/vega_sim/vegahome/data/faucet/wallets/vega.1641977537535784009 b/vega_sim/vegahome/data/faucet/wallets/vega.1641977537535784009 new file mode 100644 index 000000000..4630fb5ce Binary files /dev/null and b/vega_sim/vegahome/data/faucet/wallets/vega.1641977537535784009 differ diff --git a/vega_sim/vegahome/data/faucet/wallets/vega.1641977956797580358 b/vega_sim/vegahome/data/faucet/wallets/vega.1641977956797580358 new file mode 100644 index 000000000..c9a783e41 Binary files /dev/null and b/vega_sim/vegahome/data/faucet/wallets/vega.1641977956797580358 differ diff --git a/vega_sim/vegahome/data/faucet/wallets/vega.1641978034856367487 b/vega_sim/vegahome/data/faucet/wallets/vega.1641978034856367487 new file mode 100644 index 000000000..e55914790 --- /dev/null +++ b/vega_sim/vegahome/data/faucet/wallets/vega.1641978034856367487 @@ -0,0 +1,2 @@ +-?@^jS W(- u7D>==*MU|~ʩQ*ZףO>ЛѣHW?}s $Wr NOou PO۶.mң$O1F)4|lX{i$?$,k̳]v#~zhgy]czh{B% +cL/{}2){o2_d@g}EV=r$T_,{VGD} VзA X#1Vqw+?!,c`өl׃Y4 n#Þk^A?yqGyBK+Mvckޕ>U)^+2k{|޻Ad*I;Ys^4@hzL@CNyk,7֬˾ad`wt"1d4Gdԥ\+1e>ƪz-7d_OnEI$B5Y\*nGk 7Q*˘ T;T)f' \ No newline at end of file diff --git a/vega_sim/vegahome/data/faucet/wallets/vega.1643100690865690276 b/vega_sim/vegahome/data/faucet/wallets/vega.1643100690865690276 new file mode 100644 index 000000000..59bd7adb1 Binary files /dev/null and b/vega_sim/vegahome/data/faucet/wallets/vega.1643100690865690276 differ diff --git a/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2021-12-09T12-00-28.751280926Z--b6ea7744971f455bbd754a97e8e05ea13dc1a033 b/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2021-12-09T12-00-28.751280926Z--b6ea7744971f455bbd754a97e8e05ea13dc1a033 new file mode 100644 index 000000000..1818829ef --- /dev/null +++ b/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2021-12-09T12-00-28.751280926Z--b6ea7744971f455bbd754a97e8e05ea13dc1a033 @@ -0,0 +1 @@ +{"address":"b6ea7744971f455bbd754a97e8e05ea13dc1a033","crypto":{"cipher":"aes-128-ctr","ciphertext":"dda9a66a5e65cc34103841f664b226faba75e9b957bb253acc7bab9063dff886","cipherparams":{"iv":"a6befd5f214ca43ab1ec1501efad51f6"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"1e2ba00610bdf49540654557ad9e598d16f700da857c1aec05d30de45dfa5dc6"},"mac":"8e86f59acc02ca4e3dcc7624f492d92d7ef2115a4cb7f87039b8cff96e015292"},"id":"f76ae31b-dd83-499d-87b0-8e38a9c0fe4a","version":3} \ No newline at end of file diff --git a/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2022-01-12T08-54-28.446104867Z--d1b7ef68bb457b47837c6e81da24455be7a8be0d b/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2022-01-12T08-54-28.446104867Z--d1b7ef68bb457b47837c6e81da24455be7a8be0d new file mode 100644 index 000000000..bc1d59633 --- /dev/null +++ b/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2022-01-12T08-54-28.446104867Z--d1b7ef68bb457b47837c6e81da24455be7a8be0d @@ -0,0 +1 @@ +{"address":"d1b7ef68bb457b47837c6e81da24455be7a8be0d","crypto":{"cipher":"aes-128-ctr","ciphertext":"e0a97d8e6ad6c017400098ed862e8040346165358501ce0bd1f471b2f1fbcd2e","cipherparams":{"iv":"c94cd85c92ff163c26f23a16d8d7be91"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"e6679577f67fe47e90dd3548966d9f14a8c71f87d090e5201187f825d2ab3a75"},"mac":"c04ef0dff4ccfa43b4d9d9ec407fd24003ee4cb8e9640e53b5a0e2a45fe4b045"},"id":"014d608a-ac1a-426b-ae12-c218229b09ce","version":3} \ No newline at end of file diff --git a/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2022-01-12T08-57-18.522457076Z--dc699ecdab1705ebe83b60345060b6b7620263a3 b/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2022-01-12T08-57-18.522457076Z--dc699ecdab1705ebe83b60345060b6b7620263a3 new file mode 100644 index 000000000..1c8d8bbae --- /dev/null +++ b/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2022-01-12T08-57-18.522457076Z--dc699ecdab1705ebe83b60345060b6b7620263a3 @@ -0,0 +1 @@ +{"address":"dc699ecdab1705ebe83b60345060b6b7620263a3","crypto":{"cipher":"aes-128-ctr","ciphertext":"18e572c659dea9c6d5a72dda0de672dca4d84e4c35e774f0390fa0cbbe7a5d46","cipherparams":{"iv":"9981e24c4e2d1af8d9b1b9b7fe98dcc2"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"317ea9e2cbb8a2f3e19709d82f1c7ee98f7d5f944a51d6fcf577f658d8f790df"},"mac":"44e73c16094688c8f8a8e656f2240f979ddbc59d5e7ec85dfc8caec7e363e315"},"id":"da7c2e93-21e3-462b-97a2-21a0d499267e","version":3} \ No newline at end of file diff --git a/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2022-01-12T08-58-36.643184436Z--760895ae7f813d685b048336fac88625441d6aa7 b/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2022-01-12T08-58-36.643184436Z--760895ae7f813d685b048336fac88625441d6aa7 new file mode 100644 index 000000000..6c28395f0 --- /dev/null +++ b/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2022-01-12T08-58-36.643184436Z--760895ae7f813d685b048336fac88625441d6aa7 @@ -0,0 +1 @@ +{"address":"760895ae7f813d685b048336fac88625441d6aa7","crypto":{"cipher":"aes-128-ctr","ciphertext":"50566030cabb70e2f91bf63e6cfb5974150f1476c5d73e24273dad7e3af3df9f","cipherparams":{"iv":"f1d2eeff2954a92c709bfeecf285d8f0"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"f6899b43bdd744615412542e7bd6179bf5c31256fcb698c57445df0ff2fc3b7d"},"mac":"714f29f09787a828b8604e6622acf32aaeeafb6c3ab7ef2caf361ae4b109d129"},"id":"ef0a706d-4e06-4993-ad58-32a56053903d","version":3} \ No newline at end of file diff --git a/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2022-01-12T08-59-08.359696969Z--9e5beec6e56b28ccbd02864840b0f1e0125e42ce b/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2022-01-12T08-59-08.359696969Z--9e5beec6e56b28ccbd02864840b0f1e0125e42ce new file mode 100644 index 000000000..d3fa106d0 --- /dev/null +++ b/vega_sim/vegahome/data/node/wallets/ethereum/UTC--2022-01-12T08-59-08.359696969Z--9e5beec6e56b28ccbd02864840b0f1e0125e42ce @@ -0,0 +1 @@ +{"address":"9e5beec6e56b28ccbd02864840b0f1e0125e42ce","crypto":{"cipher":"aes-128-ctr","ciphertext":"ff456333db7b1519363f533491bab3cf01f586161ebf2752fffc0e5b30e1dfa8","cipherparams":{"iv":"1a09a55cdb0683a0a6ce723f28045b47"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"c664298d1a3ed05833d5ab20486b9b488eac63f5e4d7cfbcbaea8fd228f07978"},"mac":"4d2ba13b3b5de99c87c67a28617dc1182cad55714f23bdb53a14f6ef88fae64c"},"id":"7ee202e1-fbb6-4df4-9f99-914b230ea9e5","version":3} \ No newline at end of file diff --git a/vega_sim/vegahome/data/node/wallets/vega/vega.1639051228296308758 b/vega_sim/vegahome/data/node/wallets/vega/vega.1639051228296308758 new file mode 100644 index 000000000..f369ce4ae --- /dev/null +++ b/vega_sim/vegahome/data/node/wallets/vega/vega.1639051228296308758 @@ -0,0 +1,3 @@ +jGp/,pvp$aF7GhKM(xhٸ8g0bX#|3gEkcTG,)#uo%] G {[c LX!pҸ_QwR0I3 %b{ЋOwLpF % ~Z/Xt-J+˦v¿,EqLf++H-^I%5ƷVw{;pR>)+zG.jLZtz+a: ģØ$ ݲxl~߻oF@. +d 94k77\u +'c$Ν[Z3N@oNjϽŶ:;u#~U1Mh \ə +B=")1 T}HU[Chz"\`5t}Hy'YYcK8A܉;}fL៦(?bgilaݫeNmؑZڝ~J뺑kpNȜכ᫘rzȃl}Q^b"JI \ No newline at end of file diff --git a/vega_sim/vegahome/data/node/wallets/vega/vega.1641977668033624243 b/vega_sim/vegahome/data/node/wallets/vega/vega.1641977668033624243 new file mode 100644 index 000000000..a9a8b518d Binary files /dev/null and b/vega_sim/vegahome/data/node/wallets/vega/vega.1641977668033624243 differ diff --git a/vega_sim/vegahome/data/node/wallets/vega/vega.1641977838095755067 b/vega_sim/vegahome/data/node/wallets/vega/vega.1641977838095755067 new file mode 100644 index 000000000..65183f7e6 Binary files /dev/null and b/vega_sim/vegahome/data/node/wallets/vega/vega.1641977838095755067 differ diff --git a/vega_sim/vegahome/data/node/wallets/vega/vega.1641977916225009082 b/vega_sim/vegahome/data/node/wallets/vega/vega.1641977916225009082 new file mode 100644 index 000000000..90ddeafc0 Binary files /dev/null and b/vega_sim/vegahome/data/node/wallets/vega/vega.1641977916225009082 differ diff --git a/vega_sim/vegahome/data/node/wallets/vega/vega.1641977947934016124 b/vega_sim/vegahome/data/node/wallets/vega/vega.1641977947934016124 new file mode 100644 index 000000000..3cd3cdc05 Binary files /dev/null and b/vega_sim/vegahome/data/node/wallets/vega/vega.1641977947934016124 differ diff --git a/vega_sim/vegahome/data/priv_validator_state.json b/vega_sim/vegahome/data/priv_validator_state.json new file mode 100644 index 000000000..48f3b67e3 --- /dev/null +++ b/vega_sim/vegahome/data/priv_validator_state.json @@ -0,0 +1,5 @@ +{ + "height": "0", + "round": 0, + "step": 0 +} \ No newline at end of file diff --git a/vega_sim/vegahome/data/wallet-service/rsa-keys/private.pem b/vega_sim/vegahome/data/wallet-service/rsa-keys/private.pem new file mode 100644 index 000000000..3c5d1131c --- /dev/null +++ b/vega_sim/vegahome/data/wallet-service/rsa-keys/private.pem @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/vega_sim/vegahome/data/wallet-service/rsa-keys/public.pem b/vega_sim/vegahome/data/wallet-service/rsa-keys/public.pem new file mode 100644 index 000000000..0b2356d60 --- /dev/null +++ b/vega_sim/vegahome/data/wallet-service/rsa-keys/public.pem @@ -0,0 +1,14 @@ +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1ChfFarNbLV3XYWsoBck +bPYg4bhQ/xlUYJsl1vMstlT9VFnmu2IZ9lTC60NqoQIzwl8FPvY6e0OE/wmiHG5W +5SmZUr7b4CDvJo064tpgBF8Ru9V83YjJw2UQGTrAv9zm7NcqMvWYghd6u70HYZ7a +Io7e2f1zRHpdRcCVC3fTwY0WPoMzMApMyGYQQIm0QS1UX13DCzr7aV1/c59EZWQ5 +XQVcizniEmlWPS3eOf8drmmHaDkMKA0Vy4prVUdzF5BYB6aynNsbCvQxJJJdyENy +v0os19SzQLytiNbvYgfRc/DJhwNqjsj7nRsyT7aepWP/ndA4uGYsgpcb7EDsA7vn +4w31DFStkkBDCLkMo3XDhvaYyuEnROLgVas7QzLMQ+f20jC/LpkNNY1S8p8F0H8J +mohiZytjHf3Kmpq2RQ5ciIMo9mGenjfimqLkfYrkMSwnecyJ8gmZiI+VhfB4QUKw +0wBbjm/6dMzqLDePlhsC2pbS+bafNRScHmcIiUPztKEV5wIvfLUr+9s7hG6EdCM1 +40Nl2cBG38Vxwp6/m3Z9770Ho8vYBemc7FpeLJU5+TOwZG5Xpx99B/8/j22QedHq +e5d3rvmm8ST/LRPAk47w7yC9AaAeiERjCWtTYi3qg4DCN7HnzdeJUay8697dKlXa +27znYVEgBSFtToxXkDtEUZECAwEAAQ== +-----END PUBLIC KEY----- diff --git a/vega_sim/vegahome/data/wallets/1RkMQOfoswtvmoiXrL1U b/vega_sim/vegahome/data/wallets/1RkMQOfoswtvmoiXrL1U new file mode 100755 index 000000000..7fa1c2b98 Binary files /dev/null and b/vega_sim/vegahome/data/wallets/1RkMQOfoswtvmoiXrL1U differ diff --git a/vega_sim/vegahome/data/wallets/AcZ6sIcH b/vega_sim/vegahome/data/wallets/AcZ6sIcH new file mode 100644 index 000000000..ca303d0ee --- /dev/null +++ b/vega_sim/vegahome/data/wallets/AcZ6sIcH @@ -0,0 +1,3 @@ + }aYV4RΙm|g% OŅ /@f]=Prn<߯<[/ܛ&v}8I"Tav=1TZCwd),jrK'JB~~O4˴4*J `X%t<̫,vz8@VAQ,,hFYuO^4 ~%9*gb3܆7ʓuNr0a.$WBҢbyoWt{;˯0oQ`5-=~O^,gE!17z-0ǢX%^ +gJϰN`zWc@p-=XqW/9 }W|Cy~N3rER7b*4'~TfeUϐDvs3J6pTg2mQD& +,4Fg!㹹PK@oBR BsSP!P^zDG;ٴ }T.N \ No newline at end of file diff --git a/vega_sim/vegahome/data/wallets/lLK8PvgpGBOwap3v1DdY b/vega_sim/vegahome/data/wallets/lLK8PvgpGBOwap3v1DdY new file mode 100644 index 000000000..7377ed26d Binary files /dev/null and b/vega_sim/vegahome/data/wallets/lLK8PvgpGBOwap3v1DdY differ diff --git a/vega_sim/vegahome/data/wallets/oq8YJHWE b/vega_sim/vegahome/data/wallets/oq8YJHWE new file mode 100644 index 000000000..5641cdbe5 Binary files /dev/null and b/vega_sim/vegahome/data/wallets/oq8YJHWE differ diff --git a/vega_sim/vegahome/data/wallets/xztnaIYwkocQNKbm5zG0 b/vega_sim/vegahome/data/wallets/xztnaIYwkocQNKbm5zG0 new file mode 100755 index 000000000..f3b9295b4 Binary files /dev/null and b/vega_sim/vegahome/data/wallets/xztnaIYwkocQNKbm5zG0 differ diff --git a/vega_sim/vegahome/data/wallets/yxuEAf5rJFFgsNv5dCGn b/vega_sim/vegahome/data/wallets/yxuEAf5rJFFgsNv5dCGn new file mode 100755 index 000000000..2fc58089d Binary files /dev/null and b/vega_sim/vegahome/data/wallets/yxuEAf5rJFFgsNv5dCGn differ diff --git a/vega_sim/vegahome/genesis.json b/vega_sim/vegahome/genesis.json new file mode 100644 index 000000000..be26a0520 --- /dev/null +++ b/vega_sim/vegahome/genesis.json @@ -0,0 +1,180 @@ +{ + "genesis_time": "2021-11-29T11:23:58.259066Z", + "chain_id": "test-chain-NbThRw", + "initial_height": "0", + "consensus_params": { + "block": { + "max_bytes": "22020096", + "max_gas": "-1", + "time_iota_ms": "1000" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": {} + }, + "validators": [ + { + "address": "7DFD3744A773C166B36F170E4F5EF3E998703F4E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "2lPO6I0p5uCBZzeoA2+ECJ2+57LtLVMjXpxH5za9TvE=" + }, + "power": "10", + "name": "" + } + ], + "app_hash": "", + "app_state": { + "assets": { + "VOTE": { + "name": "VOTE", + "symbol": "VOTE", + "total_supply": "0", + "decimals": 5, + "min_lp_stake": "1", + "source": { + "builtin_asset": { + "max_faucet_amount_mint": "10000000000" + } + } + }, + "6d9d35f657589e40ddfb448b7ad4a7463b66efb307527fedd2aa7df1bbd5ea61": { + "name": "tDAI", + "symbol": "tDAI", + "total_supply": "0", + "decimals": 5, + "min_lp_stake": "1", + "source": { + "builtin_asset": { + "max_faucet_amount_mint": "10000000000" + } + } + }, + "XYZ": { + "name": "XYZ", + "symbol": "XYZ", + "total_supply": "0", + "decimals": 5, + "min_lp_stake": "1", + "source": { + "builtin_asset": { + "max_faucet_amount_mint": "10000000000" + } + } + } + }, + "validators": { + "6NemqXSfN4zfZvAQeIANflEFqQ98izX9C0KLI2dITSY=": { + "id": "c2b0ab69fb1bd19862c04df401920ea62d3e0bce41a50148240f42017824d17a", + "vega_pub_key": "dfcf0fa8d67cfa11b3a511e320f3c47807a5e0735cc06dd9c2bc00f7ccc67117", + "vega_pub_key_index": 1, + "ethereum_address": "0x9e5BEEC6E56B28cCbd02864840B0f1e0125e42Ce", + "tm_pub_key": "6NemqXSfN4zfZvAQeIANflEFqQ98izX9C0KLI2dITSY=", + "info_url": "", + "country": "", + "name": "", + "avatar_url": "" + } + }, + "network": { + "replay_attack_threshold": 150 + }, + "network_parameters": { + "governance.proposal.asset.maxClose": "8760h0m0s", + "governance.proposal.asset.maxEnact": "8760h0m0s", + "governance.proposal.asset.minClose": "1s", + "governance.proposal.asset.minEnact": "1s", + "governance.proposal.asset.minProposerBalance": "0", + "governance.proposal.asset.minVoterBalance": "0", + "governance.proposal.asset.requiredMajority": "0.66", + "governance.proposal.asset.requiredParticipation": "0.00001", + "governance.proposal.freeform.maxClose": "8760h0m0s", + "governance.proposal.freeform.minClose": "1s", + "governance.proposal.freeform.minProposerBalance": "0", + "governance.proposal.freeform.minVoterBalance": "0", + "governance.proposal.freeform.requiredMajority": "0.66", + "governance.proposal.freeform.requiredParticipation": "0.00001", + "governance.proposal.market.maxClose": "8760h0m0s", + "governance.proposal.market.maxEnact": "8760h0m0s", + "governance.proposal.market.minClose": "1s", + "governance.proposal.market.minEnact": "2s", + "governance.proposal.market.minProposerBalance": "0", + "governance.proposal.market.minVoterBalance": "0", + "governance.proposal.market.requiredMajority": "0.66", + "governance.proposal.market.requiredParticipation": "0.00001", + "governance.proposal.updateMarket.maxClose": "8760h0m0s", + "governance.proposal.updateMarket.maxEnact": "8760h0m0s", + "governance.proposal.updateMarket.minClose": "48h0m0s", + "governance.proposal.updateMarket.minEnact": "48h0m0s", + "governance.proposal.updateMarket.minProposerBalance": "0", + "governance.proposal.updateMarket.minVoterBalance": "0", + "governance.proposal.updateMarket.requiredMajority": "0.66", + "governance.proposal.updateMarket.requiredParticipation": "0.00001", + "governance.proposal.updateNetParam.maxClose": "8760h0m0s", + "governance.proposal.updateNetParam.maxEnact": "8760h0m0s", + "governance.proposal.updateNetParam.minClose": "1s", + "governance.proposal.updateNetParam.minEnact": "1s", + "governance.proposal.updateNetParam.minProposerBalance": "0", + "governance.proposal.updateNetParam.minVoterBalance": "0", + "governance.proposal.updateNetParam.requiredMajority": "0.5", + "governance.proposal.updateNetParam.requiredParticipation": "0.00001", + "market.auction.maximumDuration": "168h0m0s", + "market.auction.minimumDuration": "1s", + "market.fee.factors.infrastructureFee": "0.001", + "market.fee.factors.makerFee": "0.001", + "market.liquidity.bondPenaltyParameter": "1", + "market.liquidity.maximumLiquidityFeeFactorLevel": "1", + "market.liquidity.minimum.probabilityOfTrading.lpOrders": "1e-8", + "market.liquidity.probabilityOfTrading.tau.scaling": "1", + "market.liquidity.providers.fee.distributionTimeStep": "0s", + "market.liquidity.stakeToCcySiskas": "1", + "market.liquidity.targetstake.triggering.ratio": "0", + "market.liquidityProvision.shapes.maxSize": "100", + "market.margin.scalingFactors": "{\"search_level\": 1.1, \"initial_margin\": 1.2, \"collateral_release\": 1.4}", + "market.monitor.price.defaultParameters": "{\"triggers\": []}", + "market.monitor.price.updateFrequency": "1m0s", + "market.stake.target.scalingFactor": "10", + "market.stake.target.timeWindow": "1h0m0s", + "market.value.windowLength": "168h0m0s", + "network.checkpoint.marketFreezeDate": "never", + "network.checkpoint.networkEndOfLifeDate": "never", + "network.checkpoint.timeElapsedBetweenCheckpoints": "1m", + "reward.asset": "VOTE", + "reward.staking.delegation.competitionLevel": "1.1", + "reward.staking.delegation.delegatorShare": "0.883", + "reward.staking.delegation.maxPayoutPerEpoch": "7000000000000000000000", + "reward.staking.delegation.maxPayoutPerParticipant": "0", + "reward.staking.delegation.minValidators": "5", + "reward.staking.delegation.minimumValidatorStake": "0", + "reward.staking.delegation.optimalStakeMultiplier": "3.0", + "reward.staking.delegation.payoutDelay": "24h0m0s", + "reward.staking.delegation.payoutFraction": "1.0", + "snapshot.interval.length": "100000", + "spam.protection.delegation.min.tokens": "1000000000000000000", + "spam.protection.max.delegations": "390", + "spam.protection.max.proposals": "3", + "spam.protection.max.votes": "3", + "spam.protection.proposal.min.tokens": "100000000000000000000000", + "spam.protection.voting.min.tokens": "100000000000000000000", + "validators.delegation.minAmount": "1", + "validators.epoch.length": "24h0m0s", + "validators.vote.required": "0.67" + }, + "network_limits": { + "propose_market_enabled": true, + "propose_asset_enabled": true, + "bootstrap_block_count": 0 + }, + "checkpoint": { + "load_hash": "" + } + } +} diff --git a/vega_sim/vegahome/passphrase-file b/vega_sim/vegahome/passphrase-file new file mode 100644 index 000000000..32b4afad4 --- /dev/null +++ b/vega_sim/vegahome/passphrase-file @@ -0,0 +1 @@ +pin \ No newline at end of file